Mais um desafio de Jimmy por seu pai original. Veja esses outros desafios adoráveis .
Como todos sabem, recentemente enfrentamos desafios relacionados ao Jimmy nas plataformas. Agora, Jimmy é um acrobata, como mencionei antes, e ele tem outros truques na manga.
Um desses truques está pendurado por cordas. Aqui está um exemplo de uma corda que Jimmy poderia pendurar:
||
||
||
||
||
||
Quando Jimmy fica pendurado em uma corda, fica assim:
||
||
/o\
||
||
||
Ele pode ficar à esquerda ou à direita da corda, de modo que isto:
||
||
||
/o\
||
||
também é válido. Mas ele não pode ficar com apenas uma parte do corpo, então algo assim:
||
||
||
/o\|
||
||
é inválido. Observe que quando ele está pendurado por uma parte do corpo, a outra metade da corda é visível porque Jimmy não a cobre.
Além disso, Jimmy não gosta de pendurar na parte inferior da corda - isso o assusta - então isso:
||
||
||
||
||
/o\
é inválido.
O desafio
Tome conhecimento de uma situação de Jimmy como as descritas acima e analise se Jimmy se agarrará à corda ou não através de um valor verdadeiro ou falso.
Os detalhes
Escreva um programa que aceite entrada. Isso pode ser por meio de uma função ou qualquer outro método de entrada apropriado.
- A entrada deve ser uma cena de um Jimmy e uma corda, como exemplificado acima.
O programa deve gerar um valor verdadeiro ou falso para o console, com base no fato de Jimmy poder se agarrar à corda ou se ele cair da corda, respectivamente.
Os critérios para Jimmy poder pendurar na corda:
Duas de suas partes do corpo estão na corda.
Ele não está no fundo da corda.
Ele não está flutuando no ar.
Você pode assumir que a corda será reta, composta de
||
segmentos e terá mais de um caractere de altura.Você pode assumir uma corda inteira e um Jimmy singular estará presente em sua cena, nem mais nem menos.
Você pode assumir que não haverá novas linhas à direita na parte inferior da corda.
Você deve cobrir qualquer quantidade de espaços à esquerda ou à direita antes e depois da corda.
Casos de teste
||
||
|| TRUTHY
/o\
||
||
||
||
/o\| FALSY
||
||
||
/o\ TRUTHY
||
||
/o\ FALSY
/o\
|| TRUTHY
||
||
/o\ || FALSY
||
||
Pontuação
Isso é código-golfe , então a pontuação mais baixa em bytes vence após cerca de uma semana.
Entre os melhores
Você pode visualizar o cabeçalho desta postagem expandindo o widget / snippet abaixo. Para que sua postagem seja incluída na classificação, você precisa de um cabeçalho ( # header text
) com as seguintes informações:
O nome do idioma (termine com vírgula
,
ou hífen-
), seguido por ...A contagem de bytes, como o último número a aparecer no seu cabeçalho.
Por exemplo, JavaScript (ES6), 72 bytes
é válido, mas Fortran, 143 bytes (8-bit)
é inválido porque a contagem de bytes não é o último número no cabeçalho (sua resposta será reconhecida como 8 bytes - não tire proveito disso).
<!-- Run the snippet to see the leaderboard. Report any bugs to @xMikee1 on Github. --> <iframe src="https://xmikee1.github.io/ppcg-leaderboard/?id=187759" width="100%" height="100%" style="border:none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe><style>html,body{margin:0;padding:0;height:100%;overflow:hidden}</style>
Respostas:
Japt , 5 bytes
Eu acho que isso está certo; Estou trabalhando há 16 horas seguidas e mal sei o meu próprio nome, então não ficaria surpreso se não!
Tente
fonte
Python 2 ou 3 ,
3330 bytes-3 graças a Maxwell
Uma função sem nome que aceita uma lista de linhas
Experimente online!
Quão?
Precisa haver uma seção de corda obscurecida por Jimmy que não seja a de baixo.
fonte
lambda l:'o'in map(max,l[:-1])
Python 2, 28 bytes
Experimente online!
Como funciona? Ele recebe a entrada como uma lista de cadeias e o zip se junta à cadeia. Jimmy fica na corda se houver um "|" abaixo de um "o", portanto, esse código une todas as linhas e verifica se existe um "o" seguido de "|".
Código anotado:
(Resposta antiga) Python 2 ou 3, 39 bytes
Uma função que recebe entrada como uma lista de cadeias, cada uma sendo uma linha diferente.
-11 bytes graças ao xnor! -2 bytes graças a Jonathan Allan!
Experimente online! (Se você quiser tentar mais casos de teste, basta colocar um "." Após cada conjunto de linhas na caixa de entrada.)
Como é que isso funciona? Bem, se Jimmy estiver totalmente na corda, essa linha não terá nenhum "|" personagens. Portanto, podemos verificar cada linha e, se encontrarmos nenhuma sem "|" personagens, então sabemos que Jimmy pode ficar na corda. No entanto, Jimmy não pode segurar o fundo da corda; portanto, não incluímos a linha final em nossa verificação. Se a linha final for apenas mais uma parte da corda, isso não importará, porque ainda encontraremos uma linha válida mais acima, mas se a linha final for aquela com Jimmy, ela não encontrará uma linha. sem "|" em qualquer lugar e retornará False.
fonte
lambda x:1-all("|"in i for i in x[:-1])
Geléia ,
9 76 bytesUm link monádico que aceita uma lista de linhas
Experimente online!
Quão?
Precisa haver uma seção de corda obscurecida por Jimmy que não seja a de baixo.
fonte
Note that all other characters are [less than '|']
"?brainfuck,
7964 bytesExperimente online!
Emite o byte 0x01 para verdade e nada para falsidade.
fonte
Grime , 5 bytes
Experimente online!
A ferramenta certa para o trabalho.
fonte
Stax , 6 bytes
Execute e depure
Transpõe a entrada e procura "o |".
fonte
05AB1E , 5 bytes
Experimente online!
Os únicos caracteres que podem aparecer na entrada são
\o/ |
, com os respectivos pontos de código 92, 111, 47, 32, 124 (não há novas linhas, pois optamos por receber a entrada como uma matriz de linhas). Os resultados possíveis modulando dois desses números são 0, 13, 15, 17, 19, 28, 30, 32, 45, 47, 92, 111. 111 é o maior desses, e também o único que termina com 1 , portanto, o código emitirá verdade se e somente se 111 estiver presente na lista (apenas 1 é verdade em 05AB1E). 111 é 111 (o
)% 124 (|
) e, portanto, só ocorre se houver umo
acima de|
na entrada.fonte
APL (Dyalog Unicode) , 8 bytes SBCS
Função de prefixo tácito anônimo, usando uma matriz de caracteres como argumento.
Experimente online!
⍉
transpor'o|'⍷
máscara para todos os lugareso
é imediata seguida por|
1∊
um deles é membro?fonte
Dyalog APL estendido,
1413119 bytesExperimente online!
fonte
3∊¯1+/⍤↓<
JavaScript,
3933 bytesObrigado @Daniil Tutubalin por jogar fora 2 bytes
Isso corresponde a qualquer linha que não seja a linha em que o braço esquerdo aparece e nenhuma corda aparece.
Experimente online!
fonte
/^ *.o. *\n/
?/// ,
5350 bytesExperimente online!
Como não há outra maneira de obter entrada em ///, ela é codificada:
Explicação:
A abordagem geral é substituir Jimmy por 1 unário e removê-lo de todas as situações em que ele estiver em perigo. Se ele sobreviver, ele é produzido. Se ele não, então nada é. O
~
no código é um substituto para//
, o que permite que o código seja reduzido em 3 bytes aqui. Eles são omitidos da explicação.Experimente online!
fonte
Ruby 2.5.5, 22 bytes
Espera uma matriz de linhas. Requer um mínimo da versão 2.5.5 porque é nesse momento que
Array#all?(pattern)
foi foi adicionado.Devido às restrições de que a entrada sempre será uma cena válida de Jimmy e uma corda, tudo se resume a se alguma das linhas anteriores à última linha tem a corda obscurecida.
fonte
Kotlin ,
9384 bytesExperimente online!
fonte
JavaScript,
3837 bytesExperimente online!
fonte
Retina , 9 bytes
Experimente online!
Agora, eu nunca tinha programado na Retina antes, mas até onde eu sei, isso funciona. É uma expressão regular que encontra uma string contendo (1) o início da entrada, (2) no "|" caracteres e (3) uma nova linha.
As pessoas mais familiarizadas com as expressões regulares ou com a Retina são incentivadas a oferecer sugestões. -2 bytes graças a Neil!
fonte
\n
porque uma nova linha não é um|
e, portanto, corresponderá de qualquer maneira, e a final será^
suficiente para garantir que você realmente corresponda a uma nova linha. 2) Use um pilcrow em¶
vez de\n
e remova a trilha^
(porque isso sempre acontece depois de uma nova linha no modo multilinha).Perl 5
-p
, 26 bytesExperimente online!
fonte
Befunge-98 (PyFunge) ,
2624 bytesExperimente online!
Sai com o código de retorno 3 se
\n
for encontrado e a última linha continha 3 caracteres não espaciais, caso contrário, sai com o código de retorno 0 no EOF. Portanto, isso depende da última linha que não contém uma nova linha à direita.Dissecado
fonte
05AB1E (herdado) , 6 bytes
Porto de @Shaggy resposta Japt 's .
Insira como uma lista de linhas.
Experimente online.
Explicação:
fonte
Olmo 0,19, 68 bytes
Recebe a entrada como uma lista de linhas. Desconsiderando a última linha, ele verifica se há algum sem
'|'
neles - o que implica que a corda está totalmente coberta por Jimmy.Verifique todos os casos de teste aqui .
fonte
PowerShell , 26 bytes
Resposta do porto de Maxwell para Retina .
Experimente online!
Explicação:
true
E se:|
false
de outra forma.fonte
Pitão , 9 bytes
Suíte de teste!
fonte
Pyret, 79 bytes
Espera uma matriz de linhas como seqüências de caracteres. Faz uma cópia na
link(0,l)
qual todas as linhas foram deslocadas uma a uma. Percorre cada linhar
en
onde n é a linha abaixo de r. Verifica se o corpo de Jimmy"o"
está em alguma posição, a linha abaixo dele tem um cano ali (por exemplo, Jimmy está pendurado na corda e não está no fundo).fonte