Tarea
Estás a cargo de hacer una brújula, más o menos.
Imagine su código fuente como la "aguja" de la brújula donde el correr en diferentes orientaciones produce una salida distinta.
Las orientaciones de código fuente admitidas son Norte, Este, Sur y Oeste.
Ejemplo
Digamos que tienes el código fuente:
ABCD
J K
WXYZ
Consideraremos que esta es la orientación Norte, girando 90 grados en el sentido de las agujas del reloj nos señala al Este:
W A
XJB
Y C
ZKD
girando nuevamente apunta al sur:
ZYXW
K J
DCBA
y finalmente, la última rotación hacia el oeste:
DKZ
C Y
BJX
A W
Cuando se ejecuta, cada uno de los ejemplos de código anteriores debe generar un carácter ASCII imprimible único y distinto de su elección.
Notas
Su código no tendrá entrada.
Los espacios vacíos o las nuevas líneas no colapsan / desaparecen al girar.
Las nuevas líneas iniciales / finales están bien en la salida.
Las respuestas pueden ser programas completos o funciones, por lo tanto, se envían a STDOUT o devuelven el resultado de la función.
Se aplican reglas estándar de código de golf ; ¡La respuesta más corta en bytes gana!
fuente
Respuestas:
Jalea , 2 bytes
Pruébalo en línea!
Tenga en cuenta que la entrada principal para un programa Jelly es su último enlace, donde cualquier personaje de nueva línea dividirá los enlaces), ninguno de los programas de dos líneas accede realmente a su enlace superior.
Los cuatro programas completos, todos los cuales imprimen implícitamente su resultado, son:
Norte :
Este :
Sur :
Oeste :
fuente
Japt ,
32 bytesDe alguna manera, de alguna manera , encontré una solución extremadamente hacky de 2 bytes ...
Salidas del norte
0
:Como no hay entrada implícita, su valor predeterminado es
0
.g
en un número devuelve el signo del número independientemente de sus argumentos ("y"
en este caso).Salidas del este
2
:En un programa de varias líneas, la primera línea establece la entrada a su resultado. Esto es básicamente un no-op, ya que
g
on0
es0
. Luegoy
devuelve el GCD de0
y ... ya que le falta un argumento, su valor predeterminado es2
(¡gracias, @Oliver !). Esto da2
como salida.Salidas del sur
g
:y
, como antes, es GCD. Como gcd (0, x) es x para cualquier valor,y
on se0
toma la libertad de devolver su argumento. En este caso, el argumento es"g"
cuál es el resultado.Salidas del oeste
1
:y
en 0, como antes, vuelve2
. Esto se pasa ag
, que (como ya se discutió) es la función de signo en los números. Por lo tanto, el resultado es1
.fuente
Java (OpenJDK 8) ,
73094421855 bytes-2888 bytes gracias a Leaky Nun
-3566 bytes gracias a Wheat Wizard
Pruébalo en línea!
Versión antigua
Enfoque directo con comentarios que envuelven el código ^ 2 cuadrado, esto se puede hacer en casi cualquier idioma.
Un ejemplo (más legible) en Python
fuente
interface M{static void main(String[]a){System.out.println(0);}}
lugar, puede usar para guardar algunos bytes.Brain-Flak , 33 bytes
Pruébalo en línea!
Brain-Flak , 33 bytes
Pruébalo en línea!
Brain-Flak , 36 bytes
Pruébalo en línea!
Brain-Flak , 38 bytes
Pruébalo en línea!
Brain-Flak , 41 bytes
Pruébalo en línea!
fuente
Alice , 17 bytes
Salidas
1
. Pruébalo en línea!Salidas
x
. Pruébalo en línea!Salidas
5
. Pruébalo en línea!Salidas
3
. Pruébalo en línea!fuente
Befunge,
1713 bytesPensé que Befunge sería divertido para un problema geométrico. Hay una solución trivial 4x4 similar a otras aquí (necesito 3 comandos) pero me las arreglé un poco mejor.
Editar: se olvidó de las nuevas líneas
Edición 2: me di cuenta de que podía crear un gato
Edición 3: el gato está muerto
Gatito RIP: <
fuente
05AB1E ,
53 bytesNorte , este , sur , oeste
fuente
Y'X
que funcionará, pero aún tengo que probarlo.Y'X
también es válido. Sin embargo, todavía estoy buscando un byte 2; ninguno de los 'comandos de punto' funciona, por lo que dudo que exista.10
habría funcionado si permitieran varios caracteres para una salida; P. *C (gcc) ,
283279209 bytesPruébalo en línea!
El mismo viejo truco de comentarios aquí, pero al menos, en C, esto no se vuelve enorme ;)
W
dirección fija y -70 (!) bytes gracias a los comentarios de ETHproductionsfuente
);}
a la línea de abajo, así (sin embargo, no he probado las rotaciones)W
programa en su configuración actual actualmente falla porque hay un extrasn
después del código real. Aparentemente, puede solucionar esto cambiando la barra diagonal justo antespm
de la línea superior a un punto y coma.Laberinto , 9 bytes
Impresiones
0
. Pruébalo en línea!Impresiones
3
. Pruébalo en línea!Impresiones
1
. Pruébalo en línea!Impresiones
2
. Pruébalo en línea!Explicación
Cada programa comienza en el primer espacio no ordenado en orden de lectura (es decir, el carácter superior izquierdo o superior central), moviéndose hacia el este. Para el primer programa:
Para el segundo programa:
Para el tercer programa:
Para el cuarto programa:
fuente
Wumpus , 7 bytes
Impresiones
0
. Pruébalo en línea!Impresiones
1
. Pruébalo en línea!Impresiones
3
. Pruébalo en línea!Impresiones
2
. Pruébalo en línea!Explicación
El primer programa es bastante fácil:
O
imprime un cero implícito y@
termina el programa.Comenzando en el segundo programa, debemos observar el diseño de la cuadrícula triangular para comprender el flujo de control:
Para el tercer programa:
El cuarto es donde se pone realmente funky. Las líneas discontinuas indican celdas que no se ejecutan porque son omitidas por
$
:fuente
PowerShell ,
2011 bytesAbusa de los comentarios (
#
) como una locura, y del hecho de que un solo número colocado en la tubería obtiene salida tal cual. Las impresiones de arriba1
. Pruébalo en línea!Desde aquí, puede ver fácilmente que cada rotación produce solo un número que se encuentra a la "izquierda" de los comentarios, por lo que solo se generará un número por rotación.
¡Guardado 9 bytes gracias a Wheat Wizard !
fuente
Estrellado , 34 bytes
O con espacios que se muestran como guiones para que pueda verlos:
Pruébalo en línea!
Los comandos en Starry son
+
,.
y algunas otras cosas, y lo que hacen está determinado por cuántos espacios hay delante de ellos: a+
con n espacios empuja n −5 a la pila, y.
con un número par de espacios lo imprime. Lasz
líneas sy nuevas se ignoran por completo.Hay 6 espacios antes del primero,
+
por lo que empuja 6−5 = 1, y lo.
imprime.Y las rotaciones:
Pruébalo en línea! Esto imprime "8".
Pruébalo en línea! Esto imprime "2".
Pruébalo en línea!Y esto imprime "3".
fuente
dc , 9 bytes
Pruébalo en línea!
Creo que su obviedad es parte del encanto.
fuente
Lote, 90 bytes.
Batch realmente no tiene un carácter de comentario. Para los comentarios de línea completa,
:
funciona, ya que introduce una etiqueta, pero todavía necesito algo para terminar elecho
comando mientras que no funciona cuando se invierte.&:
parece funcionar, que es todo lo que necesito aquí, pero realmente confunde a Batch, me equivoca si no pongo un:
antes@
en la siguiente línea y también de alguna manera me olvido de imprimir una nueva línea.fuente
MATLAB,
29 17 511 bytesAl darse cuenta de que la pregunta requería caracteres ASCII individuales no solo una salida distinta, aquí hay un enfoque MATLAB que hará exactamente eso:
Esto imprimirá implícitamente 1, 2, 3 o 4 dependiendo de la rotación.
fuente
Cardenal ,
20 17 1211 bytesPruébalo en línea!
¿Todo este tiempo y nadie respondió en Cardinal? Este primero sale
0
.Este
Pruébalo en línea!
Salidas
1
.Sur
Pruébalo en línea!
Emite un espacio.
Oeste
Pruébalo en línea!
Salidas
v
.fuente
SOGL V0.12 , 4 bytes
Salidas
1
, Pruébelo aquí!Salidas
H
, Pruébelo aquí!Salidas
5
, Pruébelo aquí!Salidas
6
, Pruébelo aquí!fuente
JS, 17 B
Salidas:
Norte: 2,
Este: 3,
Sur: 4,
Oeste: 0.33333333333….
(como en: 2, 3/1, 4, 1/3)
fuente
Perdon, quise decir:
y 28B. Y salidas como 0.5, 3, 2, 0.
fuente
JavaScript (ES6), 86 bytes
Salidas 0 para el norte, 1 para el este, 2 para el sur y 3 para el oeste.
Mostrar fragmento de código
fuente
MATL , 11 bytes
Pruébalo en línea!
Comencemos esto en MATL. El desafío principal es que MATL simplemente falla si una función requiere entrada si la pila está vacía. Tal vez algo inteligente con modificadores como
X
,Y
,Z
y&
podría hacer algo más corto, pero no pude encontrar una combinación adecuada.Explicación: todos los caracteres introducen un único número entero en la pila y los
x
elimina a todos, excepto el último.fuente
Perl, 49 bytes
Código de 48 bytes + 1 para
-p
.Asume una entrada vacía que TIO no admite, por lo que se agrega una nueva línea en su lugar y no se usa. Imprime N , E , S , W .
Pruébalo en línea!
fuente
C (gcc) , 120 bytes
Esperaba más sinergia entre las variantes.
norte
Este
Sur
Oeste
fuente