Después de toda la diversión que hemos tenido con los desafíos políglotas en el pasado ( reciente ), ¿qué tal un desafío donde la salida puede estar en dos idiomas?
Su respuesta debe aceptar la entrada booleana b
y la salida del texto "true"
o "false"
. El mismo código de salida tiene que, cuando se ejecuta en otro idioma, "waar"
o "onwaar"
, o cualquier otra traducción de true
y false
.
Entrada
- La entrada es una verdad / falsey claramente distinguible. Se admiten los valores reales T / F, un bit, int o cadena (vacía).
- La entrada debe ser la misma para todas las partes de su envío.
Salida
La salida puede ser devuelta por una función, escrita
STDOUT
, colocada en una ventana emergente, impresa en 3D y enviada por correo, etc.La salida necesita representar el estado de
b
. Por lo tanto, un 'verdadero' debe generar 'verdadero', 'waar' ... y 'falsey' debería conducir a 'falso', 'onwaar', etc.Diferentes idiomas pueden usar diferentes métodos de salida.
Idiomas utilizados
Una de sus salidas DEBE ser
"true"
y"false"
.Las diferentes versiones de lenguajes de programación cuentan como lenguajes diferentes para este desafío.
Los diferentes dialectos de un lenguaje humano cuentan como idiomas diferentes para este desafío.
Puede extender el políglota a más de dos lenguajes de programación. Cada lenguaje de programación necesita generar un lenguaje humano distinto.
La respuesta con la mayoría de los idiomas incorporados será declarada ganadora. Cuando está empatado, se considera bytecount.
fuente
"True"
y"False"
aceptable en lugar de la necesaria"true"
y"false"
?Respuestas:
Dyalog APL ,
243237 bytes : 14 idiomas, ampliable a 131 *-6 bytes gracias a Soaku .
Requiere
⎕IO←0
cuál es el predeterminado en muchos sistemas. Solicita la entrada de0
o1
.Dependiendo de la versión (9.0 a 16.0, con versiones menores) sale en inglés, español, portugués, alemán, vietnamita, francés, turco, italiano, polaco, sundanés, filipino, yoruba, uzbeco o rumano, aunque sin diacríticos.
⎕AV⍳'ëáàÆÅÄòðÓÈÇ'
en los índices de la A tomic V ector (151 142 141 133 132 131 122 121 111 102 101 96)((
...)⍳
...)
encuentra la posición de⍎
el evaluado⎕D∩⍨
intersección de D igits y4↑
los cuatro * primeros caracteres de1⊃
el segundo elemento de#⎕WG'APLVersion'
el número de versión(
...)⊃
luego usa eso para elegir⎕⊃
el elemento input'th (0: primero; 1: segundo) des¨
la función s (que definiremos en breve) aplicada a cada uno de⌽
el reverso de(s←{
...})
s aplicado a - donde s se define como1↓¨
el primer personaje caído de cada uno de⍵⊂⍨
el argumento dividido donde⍵=
los caracteres del argumento son iguales a⊃⍵
el primer personaje del argumento';,true,adevarat,
...,falsch',
esta cadena antepuso a18⍴',falso'
dieciocho caracteres tomados cíclicamente de esa cadena* Desde la versión 12.1, el número de versión incluye el número de compilación, por lo que al aumentar el número de caracteres tomados de esta cadena, es fácil cubrir los 131 idiomas de escritura latina .
fuente
prawdziwy
aprawda
yfalszywy
afalsz
. Las formas más cortas se ajustan mejor aquí y le dan una mejor puntuación.6 idiomas, 169 bytes
Espera
0\n
o1\n
como entrada, e imprime palabras en:vals/waar
),faux/vrai
),false/true
)usant/sant
),usand/sand
),falso/vero
).fuente
print
declaración!Todos los Funges, 6 idiomas, 146 bytes.
💥 ¡Ahora en 3D! 💥
Para mayor claridad, he separado los dos planos de código para que pueda ver cómo están en capas. En el disco, estos dos bloques se separarían con un carácter de avance de formulario al final de la línea anterior.
Las reglas decían que las diferentes versiones de un idioma cuentan como idiomas separados, por lo que esta es seis versiones de Funge / Befunge. :)
Gracias a Dennis , todas las versiones de Befunge ahora se pueden probar en línea en TIO . Sin embargo, actualmente no hay implementaciones que funcionen de las variantes Unefunge y Trefunge, por lo que para aquellos que recomendaría Rc / Funge .
A
se ignora en Befunge 93 y 96, pero es el comando Acerca de la cara en 97 y no se admite en 98 y, por lo tanto, se refleja. Esto significa que 93 y 96 siguen a lav
baja mientras que 97 y 98 se envuelven al lado opuesto del campo de juego.En Befunge 96, un
;
espacio seguido al comienzo de la línea lo marca como un comentario, de modo que esa línea se omite y el intérprete continúa>
en la tercera línea. En 93, sin embargo, el intérprete sigue el>
de la segunda línea.La ruta 97/98 continúa en la primera línea de derecha a izquierda, saltando sobre la sección dentro de los
;
marcadores de comentarios, une el&
comando y finalmente llega a la secuencia de U-bendv<^<
. En Unefunge, estos cambios de dirección no son compatibles, por lo que el intérprete invierte la dirección y ejecuta la sección omitida anteriormente en los comentarios. En Befunge / Trefunge continúa hacia la izquierda.En Befunge 97, el
m
comando no es compatible y, por lo tanto, se omite, por lo que el intérprete continúa a lo largo de la primera línea. En 98 es solo en 3D, por lo que se refleja en Befunge (2D) y el intérprete siguev
a la derecha de la misma hasta la cuarta línea. En Trefunge (3D) es una rama alta-baja que transfiere un nivel a lo largo del eje z al segundo plano.Entonces, aparte del caso Unefunge, tenemos cada versión reuniendo su par de cadenas desde una línea separada antes de ser dirigido a uno de los
&
comandos para obtener la entrada del usuario. Esas rutas de código se fusionan a través de los^
comandos en la segunda columna, dirigiendo el flujo del programa hacia arriba a través de la parte superior del campo de juego, volviendo a la parte inferior nuevamente.Finalmente tenemos la
^_^
secuencia que decide qué camino seguir en función de la entrada del usuario. Si es 0 , vamos directamente a la secuencia de salida (>:#,_
) escribiendo la cadena falsa . Si es 1 , primero ejecutamos lo>_
que borra la primera cadena de la pila y, por lo tanto, genera la cadena verdadera .fuente
5 idiomas, 249 bytes
Nota: los
\r
y\e
son caracteres de salto de línea y de salto de línea literales, pero\x5b
tiene que ser como es, de lo contrario, Ruby se queja de la clase de caracteres en la expresión regular.Llegué un poco tarde a la fiesta, y no soy un ganador de ninguna manera, pero comencé a trabajar en un políglota para el desafío de acción de gracias y sentí que podría ser un poco tarde, ¡así que lo transformé en esto!
Explicación
Python:
True
/False
Aquí establecemos
q
a0//1
que es0
, entonces tenemos una'''
cadena que contiene la mayor parte del otro código, almacenar una matriz que contieneFalse
yTrue
y indicies0
y1
respectivamente, asignar la entrada ab
(que debe ser0
o1
para significarFalsy
yTruthy
), entoncesprint
lab
ésimo índice dea
, mostrandoFalse
oTrue
.Ruby:
Vrai
/Faux
Al igual que con la secuencia de comandos de Python, establecemos la variable
q
, pero en Ruby esto se establece en0 / /1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord
, ya que Ruby divide esto0/
como "cero dividido por" y lo siguiente/
como "comienzo del literal regex". Usando este literal, puedo ocultar el código PHP y comenzar Python'''
. Tenemos que agregar.to_s.ord
porque el operando correcto/
tiene que ser aFixnum
. Después de esto definimos una funcióninput()
y la variableTrue
yFalse
para contener sus homólogos franceses y, finalmente, empezamos una cadena'
que continúa en la línea siguiente. Por último, creamos una matriza
que contiene"Vrai"
y"Faux"
y seleccionarlas con elinput()
número ed0
o1
.Perl:
Waar
/Vals
En Perl, los bloques
q=..=
,q+...+
yq-...-
, son literales entre comillas usando delimitadores inusuales, en el código anterior los he reemplazado por'...'
. La mayor parte del código está contenido en una cadena literal, pero definimossub a
(¡que contiene un<><
!) Que verifica siSTDIN
es menor que1
, devolviendoWaar
oVals
. Enprint(a[b])
realidad,print
es el resultado de llamar alsub
a
with y al argumento de los[b]
cuales es un ArrayRef que contiene la palabra desnudab
.JavaScript:
Vero
/Falso
La primera línea se comenta en su mayoría a cabo por la división
0//1
(//
es comentario de línea en JavaScript) así que sólo pusimosq
a0
. La siguiente línea trata de asignar las funciones JS a sus nombres de Python y variables de configuraciónTrue
yFalse
ser las cadenas italianas, finalmente ejecutamos lo mismo que el código Ruby, configurando a una matriz de palabras italianas y seleccionando usando uninput
de0
o1
.PHP:
Ekte
/Falsk
Dado que PHP solo ejecuta el código entre
<?...?>
todo lo demás, se genera tal como está, por lo que nuestro código aquí simplemente imprime un avance de línea (para volver al comienzo de la línea actual) y la secuencia de escape ANSI para borrar hasta el final de la corriente línea, seguida deEkte
oFalsk
dependiendo de si el carácter de entrada (0
o1
) es verdadero o falso.fuente
Pyth, Python - 28 bytes
fuente
.q
y agregando un;
al final.C #, Java, 104 bytes
Golfizado:
Sin golf:
Prueba:
C#
Java
Explicación:
Al llamar
ToString()
otoString()
en un booleano en C # y Java respectivamente, C # imprime la cadena con una primera letra mayúsculaTrue
yFalse
, pero Java imprime todo en minúsculastrue
yfalse
.fuente
2 idiomas, 60 bytes
Los idiomas son:
true
false
waar
onwaar
Nota: Hay bytes UTF-8, no bytes Jelly.
fuente
Lua / JavaScript, 68 bytes
No sé por qué lo jugué; Simplemente me dio la gana.
fuente
JavaScript / BF
En ambos idiomas, ninguna entrada se considera falsa y cualquier entrada se considera verdadera.
Cuando vea que la estructura del programa gira 90 grados hacia la izquierda, los símbolos BF parecen torres en una ciudad :)
Pruébelo en línea (BF verdadero caso de prueba)!
¡Pruébelo en línea (BF falso testcase)!
Explicación
JavaScript
Si el
prompt
es verdad (es decir, no vacío porqueprompt
devuelve una cadena), salidastrue
o salidas demásfalse
.BF
Salidas
sand
(danés para verdadero) si hay una entrada, o bien salidasusand
(falso) si la entrada está vacía.TL; DR Si la entrada no está vacía (es decir, verdadera), no envíe nada. Si la entrada está vacía (es decir, falsa), la salida
u
. Luego, independientemente de si la entrada es verdadera o falsa, la salidasand
.Me inspiré en https://esolangs.org/wiki/Brainfuck_algorithms con el que construí la lógica de mi programa.
Tomar entrada. Si la entrada no está vacía, incremente la memoria, llamemos a esta celda "Celda A". Fin de la declaración if
Compara el valor de "Celda A" con
0
. Si son iguales, deja que sea "Celda B"1
, o deja que sea0
.Si "Cell B" es 1, entonces la salida
u
. Cierre la declaración ifSalida
sand
fuente
u
condicionalmente, nos
?u
condicionalmentes
condicionalmente; ¿podrías arreglar eso para mayor claridad? Buena respuesta de todos modos.If input is empty (ie false), output `s`.
Creo que esa es la parte que confundió a Alex L.Haskell, JavaScript, Python, 115 bytes
fuente