Um caractere isolado é um caractere (que não seja uma nova linha) que não possui um caractere adjacente do mesmo tipo. Os caracteres adjacentes podem estar à esquerda, à direita acima ou abaixo, mas não nas diagonais. Por exemplo, no seguinte texto H
é isolado:
Ybb
YH%
%%%%
Todos os outros caracteres não são isolados porque cada um deles tem pelo menos um outro caractere do mesmo tipo adjacente.
Sua tarefa é escrever um programa que use uma string como entrada e determine o número de caracteres isolados.
Pontuação
Sua resposta será pontuada por duas métricas. O primeiro é o número de caracteres isolados no seu programa. Você deve tentar minimizar isso. O segundo será o número de bytes no seu programa. Você deve minimizar isso também. O tamanho do programa atuará como desempate para o primeiro critério.
Regras adicionais
Você deve oferecer suporte à entrada no intervalo ascii imprimível, além dos caracteres que você usa no seu programa.
Você pode considerar que uma quebra de linha seja um caractere de nova linha ou uma nova linha seguida por um feed de linha.
Você pode receber informações em qualquer formato razoável. Isso inclui uma lista de linhas.
Casos de teste
Ybb
YH%
%%%%
Aaaab
uuu
yyybbb
A
qqWWaaww
fonte
Y
abaixo dele.restricted-source
desafio e não permitir personagens isolados por completo.Respostas:
Python 2 , 0 (
350344314309301298291 bytes)Experimente online!
-7 bytes, graças a Jo King
fonte
Limpo , 0 (
439... 415 bytes)-11 graças a Ørjan Johansen
Finalmente, um desafio em que eu posso marcar 0 com o Clean!
(e normalmente é ruim em desafios de layout de origem!)
Experimente online!
O link do TIO usa
module main
devido à maneira como o Clean é implementado no TIO, masmodule d
funcionará se você nomear o arquivo emd.icl
vez demain.icl
como o TIO.Uma das linhas antigas explicadas (nova versão é a mesma coisa em uma ordem diferente):
fonte
let
salva 11 bytes.d
práticoJavaScript (ES6), 0 (154 bytes)
Guardado
24 bytes graças a @ ØrjanJohansenRecebe entrada como uma matriz de seqüências de caracteres.
Experimente online!
fonte
Geléia , 0 (
41 2725 bytes)Experimente online!
Aceita entrada como lista de linhas. A primeira linha do código nunca faz nada e existe apenas para minimizar caracteres isolados.
fonte
MATL , 0 (54 bytes)
Entrada é uma matriz de células de cordas, uma para cada linha:
{'line 1', 'line 2', 'and line 3'}
.Experimente online! Ou verifique os casos de teste e o código fonte .
fonte
Python 3 , 0 (323 bytes)
Experimente online!
fonte
05AB1E , 0 (101 bytes )
Experimente online.
Este é um dos programas 05AB1E mais feios e mais longos que eu já escrevi ..>.> Esse desafio é enganosamente difícil no 05AB1E. Não tenho dúvidas de que a contagem de bytes pode ser reduzida pela metade ou até três / quatro vezes menor usando uma abordagem diferente (ou mesmo com uma abordagem semelhante), mas atualmente não vejo como. Estou feliz que esteja funcionando agora. Se alguém postar uma resposta 05AB1E muito mais curta com alguns truques inteligentes, provavelmente vou excluir essa resposta por vergonha ... xD
Explicação:
fonte
Ruby , pontuação 0,
237209 bytesExperimente online!
fonte
JavaScript (Node.js) , 0 (279 bytes)
Experimente online!
Receba entrada como matriz de linhas.
fonte