Parece que recentemente, houve muitos Jimmys caindo à morte, como pode ser visto aqui , e aqui onde você foi convidado a determinar se Jimmy cairia. É hora de acabar com essa loucura e tentar salvar Jimmy.
Jimmy tem três partes do corpo /
, o
e \
dispostas como este
/o\
As plataformas são representadas por -
. Jimmy cairá da plataforma se tiverem duas ou mais partes do corpo que não estão diretamente acima da plataforma.
Alguns exemplos:
/o\
- -------
Jimmy vai equilibrar uma vez que todas as partes do corpo estão acima de -
.
/o\
------ ---
Jimmy vai equilibrar uma vez que duas partes do corpo estão acima de -
s.
/o\
-- ---- --
Jimmy se equilibrará mesmo estando divididos entre duas plataformas
/o\
-
Jimmy não estará equilibrado, pois duas partes do corpo não estão acima de uma plataforma.
Como o suprimento de minha plataforma está acabando, só tenho plataformas com um comprimento de 5 e é importante usar o mínimo possível.
Sua tarefa é pegar uma entrada do Jimmys e gerar uma série de plataformas que salvarão todos os Jimmys na entrada. Sua saída deve usar o menor número possível de plataformas, mas cada plataforma deve ter 5 -
'de largura.
Observe que a regra da plataforma sendo 5 de -
largura significa que cada plataforma deve ter um espaço entre elas. ----------
não é válido na saída, pois será considerada uma plataforma de comprimento 10 e não duas plataformas de comprimento 5.
Casos de teste
/o\ /o\/o\ // input
----- ----- // output
/o\ /o\
----- -----
/o\ /o\ // same input as above
----- ----- // this is also valid output
/o\ /o\
-----
Aplicam-se regras padrão.
Este é o código-golfe, que a resposta mais curta ganhe!
Respostas:
Carvão ,
1715 bytesExperimente online! Link é a versão detalhada do código. Explicação:
Repita enquanto a posição do cursor é menor que o comprimento da entrada.
Se o caractere nessa posição na entrada for um
o
ou a\
, imprima 5-
s.Vá para o próximo personagem, garantindo assim pelo menos um espaço entre as plataformas.
A solução anterior de 17 bytes é IMHO mais "Carvão-y".
Experimente online! Link é a versão detalhada do código. A saída inclui entrada, demonstrando assim a correção da solução. Explicação:
Imprima a entrada e vá para o início da próxima linha.
Passe por todos os caracteres da entrada para garantir que nenhum Jimmy seja esquecido.
Veja o caractere acima do cursor. Se não houver, ou se houver espaço ou
/
, não faça nada; caso contrário, imprima 5-
s.Vá para o próximo personagem, garantindo assim pelo menos um espaço entre as plataformas.
fonte
Python 2 ,
7067 bytesExperimente online!
-3 bytes graças a Kevin Cruijssen & Neil
Não é a mais bonita, não sabe como lidar melhor com as sobras de barras ...
Infelizmente, não podemos substituir as duas extremidades de cada plataforma por espaços usando uma única
re.sub
chamada, porque no caso de duas plataformas estarem separadas por um espaço, a diferença entre elas não pode ser correspondida mais de uma vez. Uma asserção lookahead / lookbehind não ajudará, porque qualquer coisa que corresponda a essas asserções não será substituída.Usando uma única
re.sub
referência:Python 3.8 (pré-lançamento) , 78 bytes
Experimente online!
fonte
/
seguida, o[^ ]
.JavaScript (ES6),
56 5554 bytesExperimente online!
Ou 47 bytes, se o retorno de uma matriz de caracteres for aceitável.
fonte
Python 3 ,
158164160 bytesExperimente online!
Esta é a minha primeira resposta de código de golfe, e estou feliz que esteja em uma pergunta do Jimmy!
Explicação:
a=input();r=""
: Receba entrada e inicialize uma nova stringr
.for i,c in enumerate(a):
: Enumere sobre a entrada.try:r[i] ... except:
: Veja ser[i]
existe - caso contrário, processe oexcept
bloco.if c in"/o":
: Verifique se o personagem atual está nas duas primeiras partes do corpo de Jimmy.r+=(a[i+5<len(a)and i+5or len(a)-1]=="o"and" "or"")+"----- "
: Se sim, adicione um novo segmento. Adicione um espaço antes do nosso novo segmento se outro cabeçote Jimmy estiver presente em cinco caracteres.else:r+=" "
: Caso contrário, basta adicionar um espaço.print(r)
: Imprima nosso resultado final.fonte
Retina ,
2321 bytes-2 bytes graças a @Neil .
Contém um espaço à direita na segunda, quarta e sexta linhas.
Porto da resposta do Python 2 do @negativeSeven , por isso não deixe de votar nele!
Experimente online.
Explicação:
Substitua tudo
"/"
por" "
:Anexar 5 espaços à direita:
Substitua todas as substrings de tamanho seis que não começam com um espaço por
"----- "
:fonte
\S
vez de[^ ]
?Geléia , 35 bytes
Experimente online!
Um link monádico que recebe a entrada como uma sequência e retorna uma sequência Jelly com as plataformas.
Inspira-se na resposta de @ negativeseven .
fonte
05AB1E ,
2524 bytesPorto da resposta do Python 2 do @negativeSeven , por isso não deixe de votar nele!
Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
Japonês ,
2322 bytesUma porta da solução JS da Arnauld que estou exausta demais para testar completamente. Se for inválido, um diamante pode ser excluído?
Tente
fonte