Tarefa
Você está encarregado de fazer uma bússola, das sortes.
Imagine seu código-fonte como a "agulha" da bússola, onde correr em diferentes orientações produz resultados distintos.
As orientações de código-fonte suportadas são Norte, Leste, Sul e Oeste.
Exemplo
Digamos que você tenha o código fonte:
ABCD
J K
WXYZ
Consideraremos isso a orientação Norte, girando 90 graus no sentido horário nos aponta para o leste:
W A
XJB
Y C
ZKD
girando novamente aponta para o sul:
ZYXW
K J
DCBA
e, finalmente, a última rotação para o oeste:
DKZ
C Y
BJX
A W
Quando executados, cada um dos exemplos de código acima deve gerar um caractere ASCII imprimível único e distinto de sua escolha.
Notas
Seu código não deve ser digitado.
Espaços vazios ou novas linhas não recolhem / desaparecem ao girar.
As novas linhas iniciais / finais estão corretas na saída.
As respostas podem ser programas ou funções inteiras, assim, saem para STDOUT ou retornam o resultado da função.
Aplicam-se regras padrão de código de golfe ; resposta mais curta em bytes ganha!
fonte
Respostas:
Geléia , 2 bytes
Experimente online!
Observe que a entrada principal de um programa Jelly é seu último link, onde qualquer caractere de nova linha dividirá os links); nenhum dos programas de duas linhas realmente acessa seu link superior.
Os quatro programas completos, que implicitamente imprimem seus resultados, são:
Norte :
Leste :
Sul :
Oeste :
fonte
Japonês ,
32 bytesDe alguma forma, de alguma forma , encontrei uma solução de 2 bytes extremamente hacky ...
Saídas do Norte
0
:Como não há entrada implícita, o padrão é
0
.g
on a number retorna o sinal do número, independentemente de seus argumentos ("y"
neste caso).Saídas do leste
2
:Em um programa de várias linhas, a primeira linha define a entrada como resultado. Isso é basicamente um no-op, já que
g
no0
é0
. Em seguida,y
retorna o GCD de0
e ... como falta um argumento, o padrão é2
(obrigado, @ Oliver !). Isso dá2
como saída.Saídas do Sul
g
:y
, como antes, é GCD. Como gcd (0, x) é x para qualquer valor,y
on0
assume a liberdade de retornar seu argumento. Nesse caso, o argumento é"g"
qual é o resultado.Saídas ocidentais
1
:y
em 0, como antes, retorna2
. Isso é passado parag
, que (como já discutido) é a função de sinal nos números. Portanto, o resultado é1
.fonte
Java (OpenJDK 8) ,
73094421855 bytes-2888 bytes graças a Freira
Furada -3566 bytes graças ao Assistente de Trigo
Experimente online!
Versão antiga
Abordagem direta com comentários envolvendo o código ^ 2 quadrado, isso pode ser feito em praticamente qualquer idioma.
um exemplo (mais legível) em python
fonte
interface M{static void main(String[]a){System.out.println(0);}}
para salvar alguns bytes.Brain-Flak , 33 bytes
Experimente online!
Brain-Flak , 33 bytes
Experimente online!
Brain-Flak , 36 bytes
Experimente online!
Flak cerebral , 38 bytes
Experimente online!
Flak cerebral , 41 bytes
Experimente online!
fonte
Alice , 17 bytes
Saídas
1
. Experimente online!Saídas
x
. Experimente online!Saídas
5
. Experimente online!Saídas
3
. Experimente online!fonte
Befunge,
1713 bytesEu pensei que Befunge seria divertido por um problema geométrico. Há uma solução 4x4 trivial semelhante a outras pessoas aqui (preciso de 3 comandos), mas consegui um pouco melhor.
Editar: esqueceu as novas linhas
Edit 2: percebi que eu poderia criar um gato
Edit 3: o gato está morto
Gatinho RIP: <
fonte
05AB1E ,
53 bytesNorte , Leste , Sul , Oeste
fonte
Y'X
vai funcionar, mas ainda tenho que tentar.Y'X
também é válido. Ainda procurando por 2 bytes; nenhum dos 'comandos de ponto' funciona para isso, então duvido que exista.10
teria funcionado se eles permitiram que vários personagens para uma saída; P. *C (GCC) ,
283279209 bytesExperimente online!
O mesmo velho truque de comentário aqui, mas pelo menos em C isso não fica huuuge ;)
W
direção fixa e -70 (!) bytes graças aos comentários de ETHproductionsfonte
);}
para a linha abaixo, como assim (eu não testei as rotações embora)W
programa na sua configuração atual atualmente falha porque há um extrasn
após o código real. Aparentemente, você pode corrigir isso alterando a barra imediatamente antes dapm
linha superior para um ponto e vírgula.Labirinto , 9 bytes
Imprime
0
. Experimente online!Imprime
3
. Experimente online!Imprime
1
. Experimente online!Imprime
2
. Experimente online!Explicação
Cada programa inicia no primeiro não espaço em ordem de leitura (ou seja, no caractere superior esquerdo ou no centro superior), movendo-se para leste. Para o primeiro programa:
Para o segundo programa:
Para o terceiro programa:
Para o quarto programa:
fonte
Wumpus , 7 bytes
Imprime
0
. Experimente online!Imprime
1
. Experimente online!Imprime
3
. Experimente online!Imprime
2
. Experimente online!Explicação
O primeiro programa é fácil:
O
imprime um zero implícito e@
finaliza o programa.Começando no segundo programa, precisamos observar o layout da grade triangular para entender o fluxo de controle:
Para o terceiro programa:
O quarto é onde fica realmente divertido. Linhas tracejadas indicam células que não são executadas porque são ignoradas pelo
$
:fonte
PowerShell ,
2011 bytesAbusa dos comentários (
#
) como loucos, e o fato de que um único número colocado no pipeline é gerado como está. As impressões acima1
. Experimente online!A partir daqui, você pode ver facilmente que cada rotação produz apenas um número à esquerda dos comentários e, portanto, há apenas um número que será gerado por rotação.
Economizou 9 bytes graças ao Wheat Wizard !
fonte
Estrelado , 34 bytes
Ou com espaços mostrados como hífens para que você possa vê-los:
Experimente online!
Os comandos em Starry são
+
,.
e algumas outras coisas, e o que eles fazem é determinado por quantos espaços existem antes deles: a+
com n espaços empurra n -5 para a pilha e.
com um número par de espaços os imprime. Asz
linhas e novas linhas são totalmente ignoradas.Existem 6 espaços antes do primeiro,
+
então ele empurra 6-5 = 1 e o.
imprime.E as rotações:
Experimente online! Isso imprime "8".
Experimente online! Isso imprime "2".
Experimente online! E isso imprime "3".
fonte
dc , 9 bytes
Experimente online!
Eu acho que sua obviedade faz parte do charme.
fonte
Lote, 90 bytes
Lote realmente não tem um caractere de comentário. Para comentários em toda a linha,
:
funciona, pois apresenta um rótulo, mas ainda preciso de algo para encerrar oecho
comando enquanto não estiver operando quando invertido.&:
parece funcionar, o que é tudo o que preciso aqui, mas realmente confunde Batch, errando se eu não colocar um:
antes@
da próxima linha e também de alguma forma esquecendo de imprimir uma nova linha.fonte
MATLAB,
29 17 511 bytesTendo percebido que a pergunta pedia caracteres ASCII únicos e não apenas uma saída distinta, aqui está uma abordagem do MATLAB que fará exatamente isso:
Isso imprimirá implicitamente 1, 2, 3 ou 4, dependendo da rotação.
fonte
Cardeal ,
20 17 1211 bytesExperimente online!
Todo esse tempo e ninguém respondeu no cardeal? Este primeiro é gerado
0
.Leste
Experimente online!
Saídas
1
.Sul
Experimente online!
Gera um espaço.
Oeste
Experimente online!
Saídas
v
.fonte
SOGL V0.12 , 4 bytes
Saídas
1
, experimente aqui!Saídas
H
, experimente aqui!Saídas
5
, experimente aqui!Saídas
6
, experimente aqui!fonte
JS, 17 B
Saídas:
Norte: 2,
Leste: 3,
Sul: 4,
Oeste: 0,33333333333….
(como em: 2, 3/1, 4, 1/3)
fonte
Desculpe, eu quis dizer:
e 28B. E produz como 0,5, 3, 2, 0.
fonte
JavaScript (ES6), 86 bytes
Saídas 0 para Norte, 1 para Leste, 2 para Sul e 3 para Oeste.
Mostrar snippet de código
fonte
MATL , 11 bytes
Experimente online!
Vamos começar com isso no MATL. O principal desafio é que o MATL falhará se uma função exigir entrada se a pilha estiver vazia. Talvez algo inteligente com modificadores como
X
,Y
,Z
e&
poderia fazer algo mais curto, mas eu não poderia encontrar uma combinação adequada.Explicação: todos os caracteres colocam um único número inteiro na pilha e os
x
removem todos, exceto o último.fonte
Perl, 49 bytes
Código de 48 bytes + 1 para
-p
.Pressupõe entrada vazia que o TIO não suporta; portanto, uma nova linha é adicionada em seu lugar e não usada. Impressões N , E , S , W .
Experimente online!
fonte
C (gcc) , 120 bytes
Eu esperava mais sinergia entre as variantes.
Norte
Leste
Sul
Oeste
fonte