Você receberá uma String que contém apenas letras do alfabeto inglês, minúsculas e maiúsculas (ASCII 65-90 e 97-122). Sua tarefa é produzir a versão Fizz-Buzzified da String.
Como Fizz-Buzzify uma String?
Cada letra que tem um índice par no alfabeto inglês (o alfabeto deve ser indexado 1:)
a->1,b->2,...,z->26
será transformada emfizz
minúsculas eFIZZ
maiúsculas (f -> fizz, F -> FIZZ
).Cada letra que tenha um índice ímpar no alfabeto inglês será transformada em
buzz
minúsculas e emBUZZ
maiúsculas (e -> buzz, E -> BUZZ
).Vamos dar um exemplo, para ilustrar o algoritmo, usando a string
CodeGolf
(espaços adicionados para maior clareza):"C o d e G o l f" -> "BUZZ buzz fizz buzz BUZZ buzz fizz fizz" ^ ^ ^ ^ ^ ^ ^ ^ 1 1 0 1 1 1 0 0 (1 is odd index, 0 is even index)
Se for mais conveniente para o seu idioma, você também pode deixar espaços únicos entre os grupos (
fizz, buzz, FIZZ, BUZZ
). Portanto, um resultado comofizzBUZZbuzzbuzz
também pode ser retornado comofizz BUZZ buzz buzz
. Outros separadores não são permitidos.
Casos de teste:
Entrada -> Saída "ovo" -> "buzzbuzzbuzz" "CodeGolf" -> "BUZZbuzzfizzbuzzBUZZbuzzfizzfizz" "Redefinir" -> "FIZZbuzzbuzzbuzzfizz" "Átomo" -> "BUZZFIZZBUZZBUZZ" "yOuArEgReAt" -> "buzzBUZZbuzzBUZZfizzBUZZbuzzFIZZbuzzBUZZfizz"
Qualquer método padrão para E / S pode ser usado.
Aplicam-se lacunas padrão .
Você só pode receber informações no tipo String nativo do seu idioma. O mesmo se aplica à saída.
Você pode assumir que a entrada não estará vazia.
O código mais curto em bytes em todos os idiomas vence. Boa Sorte e Fizz-Buzz!
Respostas:
Carvão ,
2624 bytesExperimente online! Originalmente inspirado por @CarlosAlejo. Editar: economizou 2 bytes repetindo as letras de fizz / buzz em vez de atribuir a um temporário. Explicação:
fonte
Ordinal(i)
retornou a posição doi
char em sua seqüência original, mas ele retorna seu valor ASCII (código de caractere). Solução muito inteligente, ainda preciso melhorar muito minhas habilidades em carvão!C #, 92 bytes
fonte
x%2
diretamente como um booleano, sem precisar da<1
parte? Nesse caso, você poderá salvar alguns bytes dessa maneira.Python 3 ,
7369 bytes4 bytes graças a ovs.
Experimente online!
fonte
C (gcc) , 75 bytes
Experimente online!
fonte
Java (OpenJDK 8) ,
105100949190 bytesExperimente online!
Muito jogável, muito bytes, então Java!
Muito jogado por @KevinCruijssen por 9 bytes!
fonte
s->s.join("",s.chars().mapToObj(i->i>90?i%2<1?"fizz":"buzz":i%2<1?"FIZZ":"BUZZ").toArray(String[]::new));
Infelizmente, é 105 caracteres longo :( Se só eles poderiam adicionar ojoin
diretamente no córrego ou integrar umtoList
, na verdade, qualquer coisa sensata seria bom.getBytes()
vez detoCharArray()
é mais 3 bytes mais curto:s->{for(int i:s.getBytes())System.out.print(i>90?i%2<1?"fizz":"buzz":i%2<1?"FIZZ":"BUZZ");}
toCharArray()
paragetBytes()
. :)JavaScript (ES6),
7977 bytesCasos de teste
Mostrar snippet de código
fonte
C #, 97 bytes
fonte
c%2>1?c>96?"fizz":"buzz":...
Gelatina , 21 bytes
Experimente online!
fonte
Pitão ,
2321 bytesConjunto de teste .
fonte
Plain Inglês ,
820632610 bytesO Sr. Xcoder sugeriu a eliminação de uma interceptação de erro desnecessária, que economizou 22 bytes.
Código não destruído:
O IDE do inglês simples está disponível em github.com/Folds/english . O IDE é executado no Windows. Ele é compilado no código x86 de 32 bits.
fonte
If the s is "", exit.
Carvão ,
4036 bytesExperimente online!
Explicação:
Uma alternativa com a mesma contagem de bytes:
Experimente online! ( Versão detalhada )
fonte
Count
ouOrdinal
respectivamente em vez deFind
para economizar alguns bytes.if
conta como uma única declaração, para que você não precise dos{}
s. Também salvei um byte movendo oUppercase
interior aTernary
: Experimente online!Fθ«A⎇﹪℅ι²buzz¦fizzχ⎇№αι↥χχ
por 26 bytes. (Deverbosifier não gosta desta versão.)> <> , 68 bytes
Experimente online ou assista ao playground de peixes !
(Mas veja a resposta de Aaron que é 13 bytes mais curta!)
Se você não está familiarizado com> <>, há um peixe que nada pelo código em 2D e as bordas se abrem. Os símbolos
>
,<
,^
ev
definir o sentido do peixe,/
e\
são espelhos que reflectem-lo, e?
significa "fazer a próxima instrução se o topo coisa na pilha não é zero, caso contrário, saltar sobre a próxima instrução".Na primeira linha, o peixe assume um caractere de input (
i
); se for -1 para EOF, ele pára (:0(?;
); obtém o código de modificação mod 2 (:2%$
); e pressiona 1 ou 0 na pilha, dependendo se o código é menor ou maior que o código de "^" ("^"(
). As próximas três linhas redirecionam o peixe para a seqüência correta de efervescência / zumbido, depois a última linha o imprime (umao
para cada caractere) e envia o peixe de volta ao início.fonte
!
ou?
seguido de um espaço apenas ignora o espaço, mas TIO espera até a próxima coisa que não seja de espaço para pular ...!
espaços devem salta AFAIK, mas o intérprete on-line Almofadas sua codespace com espaços, o que é provavelmente o que você está vendo> <> , 55 bytes
Baseado na resposta Não é uma árvore .
Em vez de representar as 4 saídas possíveis no código, eu apenas represento suas versões em maiúsculas e adiciono 32 ao código de caractere para obter os equivalentes de maiúsculas e minúsculas.
Experimente online!
Código modificado para o intérprete online , que preenche seu espaço de código com células vazias:
fonte
Perl5 , 50 + 1 bytes
Cria uma lista de 128 itens que mapeia caracteres ASCII para a palavra de código apropriada.
fonte
05AB1E , 22 bytes
Experimente online!
Explicação
Solução alternativa de 22 bytes
fonte
PHP , 67 bytes
Experimente online!
fonte
F # ,
154153145 bytessalvou
19 bytes graças a @Mr. XcoderExperimente online!
fonte
concat
e""
na última linhaMathematica, 134 bytes
fonte
Java 8, 89 bytes
Assume
import static java.util.stream.Collectors.*;
fonte
q / kdb +, 48 bytes
Solução:
Exemplos:
Explicação:
Bastante simples, pegue a string de entrada, converta-a em valores ASCII, crie uma lista de 1 ou 0 dependendo se é ímpar ou par (dica A = 65 = ímpar) e use essa lista para indexar em uma lista de
fizz
ebuzz
. Faça a conversão para uma string e, nos casos em que a entrada for <91 (menor que um Z), aplicamos aupper
função para obter umFIZZ
ou umBUZZ
.q é interpretado da direita para a esquerda:
fonte
mod
e2
?mod[x;2]
se não quiséssemos espaço em branco - mas isso acaba sendo 1 byte a mais!Rubi , 61 + 1 = 62 bytes
Usa a
-p
bandeira.Experimente online!
fonte
Swift 4 ,
144135 bytesSem golfe:
O que estou fazendo é fazer um loop sobre cada caractere na string. Eu converto cada um para o seu valor ASCII, depois verifico se é par ou ímpar e, em seguida, verifico se está em maiúsculas ou minúsculas e produzo o valor correspondente do loop. Em seguida, uno todos os elementos da matriz resultante em uma única sequência e a imprimo.
Esta solução usa o Swift 4, portanto ainda não há como testá-lo online facilmente.
Obrigado a @ Mr.Xcoder por me salvar 9 bytes!
fonte
error: value of type 'String' has no member 'map'
, porque uma String não é convertida automaticamente em uma lista em tempo de execução.$0.characters.map{...}
func f(s:String){...}
portanto, você pode salvar 9 bytes usando o seguinte código, que usa emprint
vez dereturn
: pastebin.com/06kiiGaJ . Se não funcionar, me avise.R,
150123108 bytesTem que ser mais curto usando ASCII?Foi mais curto. Veja o histórico de edições para obter respostas antigas, usadasletters
.Verifica cada letra em busca de (1) se é maiúsculo ou não (
>91
) e se é umfizz
ou umbuzz
.fonte
Java
fonte
public static void main
) ou uma função. Atualmente, o seu é um trecho de código.