O antiferromagnetismo é o que os pesquisadores da IBM costumavam pular de um disco de 1 terabyte para um disco de 100 terabytes na mesma quantidade de átomos.
Em materiais que exibem antiferromagnetismo, os momentos magnéticos de átomos ou moléculas, geralmente relacionados aos spins dos elétrons, alinham-se em um padrão regular com os spins vizinhos (em diferentes sub-redes) apontando em direções opostas.
Seu trabalho é escrever um programa que desenhe a ordem dos átomos antiferromagnéticos, como na figura acima. Você deve ter pelo menos quatro conjuntos de pares, embora possa ter mais.
Cada par deve ser mostrado da seguinte maneira, embora devam ser setas reais :
cima baixo baixo cima cima baixo
Sua saída pode estar em arte gráfica ou saída gráfica.
Você pode criar apenas uma função ou um programa inteiro, mas deve receber uma entrada e desenhar muitos pares. Exemplos com apenas palavras :
Entrada: 1
cima baixo baixo cima cima baixo
Entrada: 2
para cima para baixo desce desce para cima para baixo
Setas aceitáveis:
↑
e↓
⇅
e⇵
/|\
e\|/
Coloque suas respostas no idioma, no formato X bytes , pois é fácil de ler. A menor quantidade de bytes ganha!
fonte
^v
?⇅
e⇵
? ( pontos de código unicode U + 21C5 e U + 21F5 )Respostas:
APL,
1812 bytesIsso constrói uma matriz 2n x 3, em que n é a entrada (
⎕
), preenchida com os caracteres↑
e↓
. A transposição (⍉
) dessa matriz é então impressa.Você pode experimentá-lo online .
fonte
\x18\x19
como↑↓
.Pitão, 15 bytes (11 caracteres)
Experimente online: Demonstração
Explicação:
fonte
Java,
313296 bytesAqui está um exemplo que exibe setas graficamente:
Em um formato mais legível:
O visor para 5 como entrada:
Você precisará redimensionar a janela que aparece para ver as setas. Tentei fazer com que nenhum deles aparecesse "cortado" pela borda interna da janela, mas pode parecer assim em certas plataformas.
fonte
CJam, 18 bytes (14 caracteres)
Gere as colunas (que formam um padrão repetitivo) e transponha.
Experimente online .
Alternativa 18 bytes:
Gire a corda
"↑↓"*n
0, 1 ou 2 vezes.fonte
CJam (15 caracteres, 19 bytes)
Demonstração online
fonte
Befunge, 71 bytes
Minha primeira resposta, por favor, seja gentil comigo: o)
Problemas de alinhamento irritantes resultaram em alguns bytes desperdiçados, se você tiver alguma melhoria para mim, eu adoraria ouvi-los!
Entrada: 4
fonte
CJam, 14 bytes
Isso requer um terminal de suporte que renderize a página de código 850 como esta:
A parte não pontiaguda do código acabou sendo idêntica à versão alternativa do @ Sp3000 .
CJam, 17 bytes
Versão Cheaty de seta dupla, com créditos para @DigitalTrauma.
Experimente online.
fonte
Pitão, 16 bytes (12 caracteres)
Exemplo:
fonte
Python 2,
131122 bytesBem ... eu bati
CJava, eu acho?Eu escolhi a altura
32
das flechas, que são bem grandes, então, depois de um tempo, a tartaruga começa a desenhar fora da tela. Se você quiser que tudo se encaixe em entradas grandes, você pode reduzir as setas substituindo os32
ou usarscreensize()
(não tenho certeza se há uma meta postagem na saída fora da tela ...)fonte
GNU sed, 25 bytes
Encontrei os símbolos de seta unicode
⇅
e⇵
, que permitem mais encurtamento e foram permitidos por este comentário :A entrada é unária , por exemplo, 4 é
1111
:Resposta anterior no caso
⇅
e⇵
não é permitida:GNU sed, 39 bytes
fonte
sed
). Isso é particularmente útil para essa pergunta, porque a saída do comprimento necessário pode ser facilmente gerada a partir da entrada unária. Cheaty? talvez - mas o consenso da meta-resposta parece estar bem com isso.Swift 2, 66 bytes
Se o Swift fosse um pouco menos detalhado, não seria tão ruim para o golfe (estou olhando para você, chamado parameter
appendNewline
)fonte
Ruby 39 (ou 44) caracteres, 43 (ou 48) bytes
De acordo com https://mothereff.in/byte-counter os caracteres das setas têm 3 bytes cada!
Uma função anônima que retorna uma matriz. Se a função precisar imprimir a matriz, ela deverá terminar com
puts a
mais 5 bytes.Exemplo de uso
Dá
fonte
J,
413532 bytes (28 caracteres)Eu nunca programei nada em J, então isso me levou um tempo, e definitivamente não é a melhor maneira de fazê-lo.
Isso espera que você insira um número ao executar antes de exibir as setas.
fonte
Javascript (ES6),
66635347 bytes (62554941 caracteres)Adereços para o Digital Trauma para encontrar os caracteres ⇅ e ⇵ e permitir que eu corte mais bytes.
fonte
J, 30 bytes
fonte
C,
169170162125123105119107 bytesEntão, eu acho que é melhor tentar, mesmo que esse obviamente não seja o vencedor :)
Golfe:
Ungolfed:
Exemplo:
Atualizar:
Veja correr aqui
fonte
for(j=0;j++<3;)
o mesmo comi
i
ej
são globais, então são inicializados com zero. Você pode largari=0
ej=0
.n
como um buffer:n=getchar();n=atoi(&n);
Oitava, 37 bytes
EDIT: corrigido da versão antiferromagnética da faixa anterior. Obrigado @ beta-decay por pegar meu erro.
Define uma função
f(n)
. Saída de amostra:fonte
CoffeeScript, 60 bytes (58 caracteres)
As compreensões facilitam sem recursão:
fonte
Ruby, 33 bytes
Como uma função:
Exemplo:
Ruby, 37 bytes
Programa completo que recebe a entrada de stdin:
fonte
> <>, 55 bytes
Experimente online aqui , inserindo o comprimento desejado como valor inicial da pilha.
Solução não,, 59 bytes:
fonte
BBC BASIC, 70 bytes
Provavelmente isso pode ser jogado mais
fonte
C, 97 bytes
Toma a entrada do primeiro parâmetro da linha de comando, por exemplo
main 4
. Suporta até357913940
pares. Em C, você não pode usar caracteres multibyte comochar
s, mas eles funcionam bem como strings.É menor como uma função, mas as outras respostas C eram programas completos, então eu fiz isso também. Seriam 69 bytes:
fonte
Python 2, 47 bytes
Porta da minha resposta BBC BASIC , aproveitando como o Python pode reverter facilmente as strings.
fonte
C,
1178985 bytesUngolfed:
fonte
JavaScript (ES6), 66 bytes (62 caracteres)
Isso inclui o caractere Unicode contado como três bytes cada, bem como a nova linha obrigatória contada como um byte.
Usa recursão como inspirado por esta resposta . Eu tentei de forma não recursiva, mas a geração de uma matriz definida levou muitos caracteres, embora alguém saiba como fazê-lo melhor do que eu.
Demo
Como em todas as respostas do ES6, elas são demonstráveis no Firefox, Edge e Safari 9 somente no momento da escrita:
fonte
Java, 150 bytes
Saída de
g(2)
:fonte
Python 2,
4555 byteseditar: setas modificadas
Abordagem bastante direta. Porém, não funciona com setas unicode.
fonte
^v
as setas como eles não têm uma caudaR,
6062 bytesLeva a entrada de STDIN e sai para STDOUT. Cria uma matriz de 3 x (2 * entradas) , adiciona uma coluna de retornos de carro e, em seguida, gera a matriz transposta.
Execução de teste
fonte
Tcl 49 bytes
Nenhum vencedor, mas pelo menos é competitivo:
fonte
lmap
vez deforeach
string repeat
pode ser abreviado parastring re
proc
recuperação de um efeito colateral delmap
retornar valores e substituir$argv
por alguém variável de uma letra pode salvar bytes.Swift 2.0, 79 bytes
Nada inteligente ...
fonte