Debate
Jose Tomas Salvador · Jul 13, 2021

Reto: Si puedes leer esto...

¡Hola Comunidad!

¡Tenemos un nuevo reto CodeGolf para vosotros! Seguid leyendo para conocer todos los detalles.

image

Tarea

Tenéis que traducir una cadena al alfabeto Pilot (Alfabeto fonético de la OTAN).

Input:

If, you can read?

Output:

India Foxtrot, Yankee Oscar Uniform Charlie Alfa November Romeo Echo Alfa Delta ?

Nota:

  • El conjunto de puntuación utilizada es ,.!?
  • La puntuación se debe mantener en tu texto resultante, pero los espacios del texto original no.
  • Xray no debe contener un guión intermedio
  • Cada palabra y símbolo de puntuación debe estar separado por un espacio ' '
  • No debe haber ningún espacio en blanco al final de las cadenas
  • Utiliza este código para comprobar la longitud del resultado
  • También puedes utilizar este caso de test

¡Compartid vuestras soluciones en los comentarios!
¡La respuesta más corta gana!

Code Golf index

2
0 172
Debate (4)4
Inicie sesión o regístrese para continuar

¡Desarrolladores! ¿No os animáis a participar en el reto?? ¡Vamos! ¡Seguro que se os ocurren buenas respuestas!! smiley

Hola Salva,

Esto me ha hecho pensar cuando Elizabeth Swann está pactando con el capitán Barbosa para que cese el ataque a Port Royal...

 

Ella va diciendo condiciones y Barbosa las acepta todas.

Cuando ya no tiene más condiciones, Barbosa ordena parar el ataque y largarse cagando leches... pero Elizabeth quiere bajarse del barco y Barbosa le contesta algo así como "eso no era parte del trato"

En tu "trato" no está el no usar un parámetro... angel

Class CodeGolf.NatoTranslator
{
Parameter P As %String = "!###########,##.#################?##Alfa#Bravo#Charlie#Delta#Echo#Foxtrot#Golf#Hotel#India#Juliett#Kilo#Lima#Mike#November#Oscar#Papa#Quebec#Romeo#Sierra#Tango#Uniform#Victor#Whiskey#Xray#Yankee#Zulu#######Alfa#Bravo#Charlie#Delta#Echo#Foxtrot#Golf#Hotel#India#Juliett#Kilo#Lima#Mike#November#Oscar#Papa#Quebec#Romeo#Sierra#Tango#Uniform#Victor#Whiskey#Xray#Yankee#Zulu";

ClassMethod ToNato(As %String) As %String
{
(r,d)="" x=1:1:$l(t) v=$p(..#P,"#",$a(t,x)-32) s:$l(v) r=r_d_v,d=" "
r
}
}

Esto da 83 reales de a ocho... digo... bytes smiley

USER>w ##class(ITPlanet.Task2).length("CodeGolf.NatoTranslator","ToNato")
83
USER>do ##class(%UnitTest.Manager).RunTest("CodeGolf")
 
===============================================================================
Directory: C:\zfly\CodeGolf\
===============================================================================
  CodeGolf begins ...
Load of directory started on 08/27/2021 11:06:43 '*.xml;*.XML;*.cls;*.mac;*.int;*.inc;*.CLS;*.MAC;*.INT;*.INC'
 
Loading file C:\zfly\CodeGolf\CodeGolf.xml as xml
Imported class: CodeGolf.NatoTranslatorTest
 
Compilation started on 08/27/2021 11:06:43
Compiling class CodeGolf.NatoTranslatorTest
Compiling routine CodeGolf.NatoTranslatorTest.1
Compilation finished successfully in 0.015s.
 
Load finished successfully.
 
    CodeGolf.NatoTranslatorTest begins ...
      TestUsingHardCodedStrings() begins ...
        AssertEquals:##class(CodeGolf.NatoTranslator).ToNato("If you can read")== "India Foxtrot Yankee Oscar Uniform Charlie Alfa November Romeo Echo Alfa Delta" (passed)
        AssertEquals:##class(CodeGolf.NatoTranslator).ToNato("Did not see that coming")== "Delta India Delta November Oscar Tango Sierra Echo Echo Tango Hotel Alfa Tango Charlie Oscar Mike India November Golf" (passed)
        AssertEquals:##class(CodeGolf.NatoTranslator).ToNato("go for it!")== "Golf Oscar Foxtrot Oscar Romeo India Tango !" (passed)
        LogMessage:Duration of execution: .000139 sec.
      TestUsingHardCodedStrings passed
      TestUsingRandomStrings() begins ...
        AssertEquals:##class(CodeGolf.NatoTranslator).ToNato($ListToString(strin,""))== $ListToString(strout," ") (passed)
        LogMessage:Duration of execution: .000036 sec.
      TestUsingRandomStrings passed
    CodeGolf.NatoTranslatorTest passed
  CodeGolf passed
 
Use the following URL to view the result:
http://172.24.103.120:52775/csp/sys/%25UnitTest.Portal.Indices.cls?Index=3&$NAMESPACE=USER
All PASSED

Manel, 

Muy bien y cortito….. pero se ve un poco viejuno y críptico. Me recuerda a unos concursos muy antiguos llamados código C ofuscadowink

Aquí te dejo uno más "modernito", con uso de (JSON-dynamic Objects)  mucho más sencillo de entender.

Supéralo! cheeky

set texto="If, you can read"


set nato={"A":"Alfa","N":"November","B":"Bravo","O":"Oscar","C":"Charlie","P":"Papa","D":"Delta","Q":"Quebec","E":"Echo","R":"Romeo","F":"Foxtrot","S":"Sierra","G":"Golf","T":"Tango","H":"Hotel","U":"Uniform","I":"India","V":"Victor", "J":"Juliett","W":"Whiskey","X":"Xray","K":"Kilo","L":"Lima","Y":"Yankee","M":"Mike","Z":"Zulu","?":"?",".":".","!":"!"," ":" ",",":","}

set texto=$ZCONVERT(texto,"U")
for i=1:1:$LENGTH(texto) { write nato.%Get($EXTRACT(texto,i)) }
----
IndiaFoxtrot, YankeeOscarUniform CharlieAlfaNovember RomeoEchoAlfaDelta

Y para probarlo, basta con copiar-pegar en el terminal, que importar y compilar suele dar mucha pereza.