As letras das palavras querem justiça.
Eles decidiram aparecer o mesmo número de vezes em uma frase igualmente.
Exemplo:
Priorities
Se tornará:
Ppprrioooritttieeesss
Cada letra aparece 3 vezes, como a letra mais comum i
, aparecendo 3 vezes.
Não importa onde você coloca as letras repetidas, desde que elas estejam próximas a uma letra semelhante.
Ou seja:
Pppriooorritttieeesss
está OK (a letra 'r')
Ppprioororitttieeesss
não está bom (a letra 'r')
Outro exemplo:
invoice
Se tornará:
innvvooiccee
Outro exemplo:
Remittance Advice
Se tornará:
Rrremmmiitttaannncce Adddvvvice
Espaço, vírgula, ponto de interrogação, cotação etc. não são considerados letras para esse desafio. Só precisa considerar [a-zA-Z]. Apenas uma vez o espaço é suficiente, e a ordem das letras deve permanecer a mesma.
A maiúscula não importa, maiúsculas e minúsculas são contadas como a mesma letra. Ou seja: Pip
tem 2 'P's e 1' I ', então ele se tornará Piip
.
É maiúsculas e minúsculas que as letras podem estar em qualquer forma, Piip=piip=piiP=PiiP
Isso é código-golfe
fonte
Respostas:
05AB1E , 16 bytes
Experimente online!
Explicação
fonte
R , 106 bytes
Experimente online!
Abordagem Base R:
+
operador Rfonte
Perl 6 , 82 bytes
-3 bytes graças a nwellnhof
Experimente online!
Pega uma sequência mutável e modifica-a no lugar.
Explicação:
fonte
.=
operador comoa.=lc.=subst(...)
. Não tenho certeza se é permitido alterar o caso de uma letra existente. Também em<:L>
vez de<:Ll>
.JavaScript (ES6), 112 bytes
Experimente online!
Comentado
fonte
o[l] = // updates o[l] to a non-numeric value
. Se bem entendi,o
existe uma matriz inteira nas funçõesF
eg
, mas muda para uma matriz de cadeias contendo uma ou mais vezes o caracterec
na parte que mencionei anteriormente? Além disso, acho que os valores deo
sãoundefined
por padrão, já que você está usando emo[l]=-~o[l]
vez de++o[l]
?o[l]
para uma letra, qualquer iteração subsequente com a mesma letra levará am - o[l] --> NaN
(número inteiro menos letra) el.repeat(NaN) == ''
. (Sobre o último ponto: sim, isso é correto.)J ,
335646 bytesExperimente online!
Não foi possível encontrar uma maneira de evitar o uso
~:tolower
duas vezes.Como funciona
fonte
R + stringr, 108 bytes
Eu não sou muito bom nisso
stringr
. Retorna uma mistura de letras minúsculas e maiúsculas, pois a pergunta diz que não importa.Experimente online!
Explicação
fonte
K4 , 35 bytes
Solução:
Exemplos:
Explicação:
Pode ser jogável com uma abordagem diferente, continuará pensando
fonte
Carvão ,
3332 bytesExperimente online! Link é a versão detalhada do código. Explicação:
fonte
Java 11,
190176162 bytes-14 bytes graças a @Nevay .
A saída está em maiúsculas completa.
Experimente online. (NOTA:
String.repeat(int)
é emulado comorepeat(String,int)
para a mesma contagem de bytes, porque o Java 11 ainda não está no TIO.)Explicação:
fonte
char
você quer dizer? Infelizmente não.var
só pode ser usado para campos únicos. Então, em vezchar m=1,i=127,a[]=new char[i];
disso seriavar m=1;var i=127;var a=new char[i];
. Aqui está uma dica útil do que você pode ou não fazer com o Java 10var
. (Eu poderia substituir oint
no circuito comvar
, mas o byte-count permaneceria a mesma.)var
. E o Java 11 quase não tem alterações relacionadas ao codegolf, exceto peloString.repeat
método que eu já usei várias vezes. Ele também possui o novoString.stripLeading
orString.stripTrailing
, que age comotrim
apenas os espaços em branco à esquerda / à direita eString.isBlank()
é o mesmo queString.trim().isEmpty()
(somente espaço em branco ou espaço em branco).s->{s=s.toUpperCase();char m=2,i=91,a[]=new char[127];for(int c:s.getBytes())m-=m+~++a[c]>>-1;for(;i-->65;)s=s.replaceFirst(i+"",repeat((i+""),m-a[i]));return s;}
Japonês
-h
, 27 bytes-3 bytes de @ETHproductions
Tentando explicar
Experimente online!
fonte
ú
truque é genial, btw :-)ñ oC ó¥
, embora exija a adição de;
...ñ
funcionou nas cordas ?! @ETHproductions, por favor, diga-me que é uma adição recente e eu não a ignorei esse tempo todo!Ruby , 89 bytes
Experimente online!
Tentei abordagens diferentes, mas o que realmente economiza muitos bytes é adicionar um caractere de cada vez.
Quão:
fonte
PowerShell 6, 123 bytes
Ele usa um intervalo de caracteres
'a'..'z'
. Veja o script do PowerShell anterior abaixo.Script de teste explicado:
Resultado:
Powershell 5.1-, 133 bytes
fonte
Vermelho , 252 bytes
Experimente online!
Solução ridiculamente longa ...
Explicação:
fonte
JavaScript (Node.js) ,
140137 bytesExperimente online!
+33 bytes da minha primeira solução para essas restrições adicionais intermináveis. JS é péssimo com as manipulações de string que não diferenciam maiúsculas de minúsculas.
-3 bytes de volta Obrigado @Arnauld.
Explicação
fonte
f
s como armazenamento temporário, então eu pensei que está tudo bemmap()
As funções de retorno de chamada são seguras para uso em armazenamento, porque são definidas em um escopo local. Usar a função principal - que é definida globalmente - é mais perigoso. Aqui, você pode usar o retorno de chamada do primeiromap()
, que o leva de volta a 137 bytes .Casca , 15 bytes
Experimente online!
Força bruta, muito lenta.
Explicação
fonte
Perl 6 ,
7770 bytesExperimente online!
Adotando a abordagem do GB de inserir um caractere até que todos os caracteres apareçam o mesmo número de vezes. Recebe uma sequência que é modificada no local.
Se os sublinhados puderem ser tratados como letras, a regex poderá se tornar
/\w/
, economizando dois bytes.Explicação
fonte
{*}
truque..value(s)
, certo? Talvez eu precise atualizar algumas das minhas soluções antigasPython 2 ,
97117 bytesExperimente online!
fonte
C (clang) ,
246223220210208193188 bytesSinalizador do compilador
-DF=;for(i=0;b[i];i++
-DB=b[i]
(29 bytes)Adicionado suporte a caso misto.
Experimente online!
fonte
Pitão,
3130 bytesExperimente aqui
Explicação
fonte
C (GCC) - 175 bytes
Ungolfed
Experimente online!
fonte
Kotlin Android, 413 bytes
Experimente on-line
Explicação etapa 1 -> Selecione a lista de caracteres distintos. passo 2 -> obtenha a contagem de todos os caracteres da string e selecione a frequência máxima de caracteres. passo 3 -> obtenha diferença na frequência de caracteres em relação à frequência máxima de caracteres passo 4 -> coloque caracteres em relação às posições na string. Resolução feliz!
fonte
C # (compilador interativo do Visual C #) , 145 bytes
Experimente online!
fonte
PHP ,
185173170 bytesExperimente online!
Ungolfed (e não ternário e não otimizado).
fonte