Como algumas pessoas devem ter notado ultimamente, abandonei o desenvolvimento de Braingolf em grande parte porque é chato e sem inspiração, e mudei para o 2Col, que é um pouco mais interessante e não foi projetado para ser uma linguagem de golfe.
O recurso definidor do 2Col é que toda linha de código deve ter exatamente 2 caracteres, excluindo a nova linha. Isso significa que a duração de um programa 2Col sempre pode ser calculada como 3n-1
onde n
está o número de linhas no programa.
Então, eis o meu desafio: dado o código 2Col como uma sequência, efetue a saída se for um código 2Col válido (cada linha tem exatamente 2 caracteres e está de acordo com a 3n-1
fórmula) e, caso contrário, falsey.
Entrada
A entrada deve ser tomada como uma única sequência ou uma matriz de caracteres.
Resultado
Um valor verdadeiro se a sequência de entrada for um layout válido e um valor falsey caso contrário.
Seu código deve ser consistente nos valores de verdade / falsey que ele usa
Casos de teste
======
F!
$^
----
truthy
======
======
*8
+1
Sq
----
truthy
======
======
nop
xt
----
falsey
======
======
+1
+1
#^
----
falsey
======
======
<empty string>
----
falsey
======
======
ye
----
truthy
======
======
no<space>
----
falsey
======
======
test
----
falsey
======
======
puzzle
----
falsey
======
Pontuação
Isso é código-golfe, e o menor número de bytes vence!
fonte
true
Falsey efalse
truthypuzzle
. Isso tornará as soluções que executam todo o comprimento do módulo 3 da string e, em seguida, são negadas (o que funciona para todos os casos de teste atuais).Respostas:
Braquilog (2), 4 bytes
Experimente online!
Programa completo (porque esse é um problema de decisão ; os programas completos do Brachylog são gerados
false.
se houver uma falha de asserção,true.
sem uma).Explicação
Os subscritos em
l
são um dos recursos mais recentes do Brachylog (embora ainda sejam mais antigos que o desafio), e esse é um bom desafio para usá-los.fonte
ṇlᵛ2
eṇlᵛ²
também funcionaria.JavaScript (ES6),
24282524 bytesPrograma fixo e raspado de três bytes graças a @ PunPun1000
Raspou um byte graças a @Shaggy
Retorna true se válido e false se não.
fonte
s=>s.match(/^(..\n)*..$/)
deve corresponder corretamente tanto daqueles, sendo também menor a 25 bytestest
vez dematch
.Cubix , 20 bytes
Retorna 1 para verdade e nada para falsey
Cubificado
ABq
ingerir toda a entrada, inverta-a e empurre o EOI (-1) para a parte inferior da pilha>;;
Entre no loop e remova itens da pilha?
Teste para EOI (-1).1uO@
pressione 1 para a pilha, gire para a saída inteira e pare_
reflita novamente no?
que redireciona para aw
mudança de faixaN-!$@;U
empurre o avanço de linha (10) para a pilha, subtraia, resultado do teste, pule a parada se falso, remova o resultado e gire;;>
remova os feeds de linha da pilha e redirecione para o loop.Experimente online!
fonte
Python, 51
Corredor do caso de teste:
fonte
Haskell,
235232 bytesEu me inspirei em algumas outras soluções, truque inteligente adicionando isso
"\n"
.fonte
Gelatina , 6 bytes
Experimente online!
Explicação:
fonte
Retina , 10 bytes
Experimente online! Saídas
1
ou0
conforme apropriado.fonte
JavaScript (ES6),
3524 bytesTente
fonte
There's gotta be a shorter way to do this with RegEx!
Yup (e os meus provavelmente não é o ideal)05AB1E , 6 bytes
Experimente online!
fonte
J-uby ,
1918 bytes:=~&
cria uma função anônima que aceitax
e retorna0
se corresponder ao regex/^(..\n*)..$/m
ou denil
outra forma.fonte
Java (OpenJDK 8) , 25 bytes
Experimente online!
Verifica se a sequência de entrada tem algum número de linhas seguido por um avanço de linha e uma linha final sem uma (garante pelo menos uma linha)
fonte
Utilitários Bash + GNU, 13
Isso define o valor de retorno do shell (acessível em
$?
) para 0 para false e 1 para true. Esse é, na verdade, o sentido oposto comparado à convenção shell normal ; portanto, para fazer isso direito, você precisa fazer:Utilitários Bash + GNU, 15
fonte
Ruby, 22 bytes
fonte
Japonês ,
76 bytesExperimente online
Explicação
fonte