Cuando se muestra un número en una calculadora, es posible considerar cómo se verían las diversas transformaciones de ese número. Por ejemplo, en una pantalla de siete segmentos, 2 se muestra así:
Y cuando se voltea horizontalmente se ve así:
Como tal, la imagen especular de 2 es 5.
La tarea en este desafío es tomar un número de un solo dígito y devolver el número que es su imagen especular (si es posible). Si su imagen especular no parece un número, devuelva el número girado 180 grados (si es posible). Si ninguno de estos es el caso, devuelve -1.
Aquí está la lista completa de entradas y salidas que su programa necesita manejar:
Input Output
0 0
1 -1
2 5
3 -1
4 -1
5 2
6 9
7 -1
8 8
9 6
Como desafío de código de golf , ¡el código más corto gana!
Respuestas:
Haskell -
433143 personajes sin nada lujoso.
Lo redujo a 31 caracteres al convertirlo en una función parcial.
fuente
f=
la segunda solución, ya que es una expresión válidaGolfScript,
1514Leí la especificación nuevamente y descubrí que la entrada debe ser una cadena.
Correr:
Versión anterior (que tiene entrada entera):
El más nuevo (14 bytes) está algo inspirado en la respuesta CJam de aditsu .
fuente
PowerShell - 27
fuente
Python 2.x - 28
fuente
`
s y guardar 2 caracteres.JavaScript
3736fuente
.search()
y guardar un byte.CJam, 20 bytes
Pruébalo en línea.
Salida
Cómo funciona
fuente
BEFUNGE 93 -
181420 BytesSupongo que los comentaristas tienen razón, aunque Befunge siendo un lenguaje en 2d es un poco diferente. Aún así, en este instante, los comentaristas tienen razón.
Pasos:
Lee la entrada como un valor numérico x, y lo empuja a la pila.
Obtiene el valor de carácter c (por ejemplo, '!' = 33 o '*' = 42. Una celda vacía = 32) en la posición x, 1.
Lee el valor de caracteres de la celda 0,1 (33), lo resta de c y lo genera como un valor numérico.
fuente
&1g'!-.
Java - 49
Aquí,
0x790a300601
hay un valor relleno con los resultados deseados, con uno agregado para que sean positivos. Los valores se almacenan en nibbles dentro del valor, por lo que se requiere un poco de desplazamiento y enmascaramiento para extraerlos.Java - 100 (opción divertida)
No es la opción más pequeña, pero sí un poco divertida. Encontré una semilla aleatoria que produce los valores correctos cuando se llama X veces (donde 0> = X <= 9).
fuente
JavaScript (ECMAScript 6) 25
JavaScript (ECMAScript 5) 43
ACTUALIZACIÓN: edc65 ha sugerido una técnica mucho mejor. el cepillo de dientes ha sugerido un lenguaje mucho mejor. En este punto, mis contribuciones principales son la depuración y el gumption.
fuente
x=>[0,-1,5,-1,-1,2,9,-1,8,6][x]
.function(x)[0,-1,5,-1,-1,2,9,-1,8,6][x]
, también gracias a Firefox. No iba a ganar de todos modos, así que decidí seguir con la respuesta de mayor compatibilidad. Si comienzo a cambiar los idiomas por brevedad, eventualmente comenzaré a definir mi propio idioma para cada desafío que haga. Pero seguiré adelante y mencionaré la versión ECMAScript 6 de todos modos, ya que lo sugirió-(x!=6)
. Gracias.f=
menos que llamef
recursivamente o la pregunta explícitamente requiera una función con un nombre específicobash 29
p.ej
fuente
'
alrededor de la expresión sed. También creo que puede omitir elg
porque la especificación solo proporciona un dígito a la vez'
. Me gusta lag
entrada más larga!Kona - 29
Esta función devuelve el elemento
x
de la matriz.0 -1 5...
Ejemplos:
fuente
JavaScript 36
3741como función ES6 - 27:
fuente
f=v=>~-[1,,6,,,3,10,,9,7][v]
Sclipting, 11 caracteres
Finalmente encontré una computadora con Windows con Visual Studio instalado para construir su intérprete. Y ha derrotado mi código GolfScript fácilmente.
Se lee
18453063256\11\?/11%(
en GolfScript.fuente
J -
2827 bytes¿Sabes lo que me gusta? Simplicidad (28 bytes). Tenga en cuenta que en J,
_1
es negativo uno (-1).Agregue un poco de complejidad y tiene 27 bytes.
Ejemplo:
fuente
CJam - 14
Versión de entrada / salida:
Versión de la pila (se supone que el número está en la pila):
Pruébalos en http://cjam.aditsu.net/
fuente
Perl
2726El recuento incluye la
p
banderaUso:
Espera, ¿Perl acaba de vencer a J? :)
fuente
y+0-9+9a4aa70a13+;$_=9-hex
, que tiene la misma longitud, pero la tuya es más original;)echo 1 | perl -pe y/2569/5296/,s/[347]/-1/
Maravilloso 34 bytes
No es la solución más corta, pero tampoco es la más larga.
Cómo funciona
}0
genera una canica que representa la primera entrada de línea de comando. Esta canica cae al siguiente tic, sobre la=6
celda.=6
es una celda de comparación, empuja cualquier canica con valor 6 hacia abajo y todas las demás hacia la derecha. Esta línea de celdas de comparación empuja las canicas hacia la derecha hasta que sean iguales al valor deseado. 0 y 8 simplemente caen y se imprimen cuando se caen de la parte inferior del tablero, 6 y 2, y 9 y 5 primero obtienen 3, restados de ellos respectivamente. Si una canica no iguala ninguno de los valores deseados, aterriza en la?0
celda, que convierte cualquier canica en una canica 0 1 . Este mármol luego se disminuye y se cae del tablero.1 Una
?n
canica técnicamente convierte cualquier canica en una canica entre 0 y n. Esto tiene el agradable efecto secundario que?0
convierte cualquier cosa en 0.fuente
MATLAB - 35
Envolvería esto en una función con
n
como único parámetro.35 caracteres
fuente
ECMAScript 6, 24
Usando JavaScript normal sería 33:
fuente
TI-BASIC,
2422Esto codifica las salidas posibles en una tabla de búsqueda almacenada como un número de punto flotante base-11; el (N + 1) th dígito de base 11 después de que el punto decimal se extrae de la tabla para obtener el valor del dígito invertido. En la base 11 el número es
.106003A097
, y los dígitos de este menos uno son exactamente0,-1,5,-1,-1,2,9,-1,8,6
.El truco de edc65 de restar uno en el caso de 6 conduce a esta solución de 24 bytes, donde
⑩^(
hay un solo token de un byte:El enfoque de cadena es de 29 bytes:
El enfoque de matriz (que Ypnpyn también tomó) es de 30 bytes, suponiendo que el número esté almacenado en X:
24 -> 22: se eliminaron dos dígitos adicionales de precisión en la constante mágica.
fuente
C - 47 bytes [eran 48 bytes]
Para agregar E / S (que otras respuestas no siempre) para 86 bytes:
fuente
Python - 34
fuente
f=lambda n:ord(" "[n])-3
trabajando con códigos	
Es menos 3 por la razón de que -1 deja un carácter nulo que no es bueno, y menos 2 deja un avance de línea que está reservado en PythonJava, 58
59O
fuente
JavaScript
4237Ejecútalo en la consola de tu navegador
fuente
C -
1171081067776 bytesNo es el mejor idioma para jugar al golf, pero bueno ...
Compila con
gcc progname.c -o progname
. (Ignore las advertencias o agréguelo-include stdio.h
al comando de compilación).EDITAR
Según la sugerencia de @bebe, aquí hay un ejemplo que toma la entrada de STDIN en su lugar:
C -
6851 bytesfuente
d=*b[1]-48
podría ser una buena ideamain(){printf("%d",(int[]){1,0,6,0,0,3,10,0,9,7}[getchar()-48]-1);}
lo siento por molestarte tanto pero me parece un poco más corto.a[]={1,0,6,0,0,3,10,0,9,7};main(){printf("%d",a[getchar()-48]-1);}
main(){printf("%d","106003:097"[getchar()-48]-49);}
51 bytesJ (24, función)
(el panel de entrada no se está reproduciendo bien. Pegue lo siguiente en un intérprete de Python y se revelará mi respuesta :)
fuente
Clojure - 36
fuente
05AB1E , 13 bytes (no competitivos)
Pruébalo en línea!
-3 gracias a Emigna .
Explicación:
fuente
0®5®®Y9®8 6¹@
debería funcionar también.@
. No es común ver que utiliza :))¹è
o)sè
.PHP ,
4839 bytesGracias a Jörg Hülsermann
Pruébalo en línea!
versiones anteriores
Pruébalo en línea!
fuente
Jalea , 14 bytes (no competitiva)
Pruébalo en línea!
Explicación:
fuente
ịV = žh‡
en 05AB1E