Vous recevrez une chaîne qui ne contient que des lettres de l'alphabet anglais, à la fois en minuscules et en majuscules (ASCII 65-90 et 97-122). Votre tâche consiste à sortir la version Fizz-Buzzified de la chaîne.
Comment Fizz-Buzzify une chaîne?
Chaque lettre qui a un index pair dans l'alphabet anglais (l'alphabet doit être indexé à 1:)
a->1,b->2,...,z->26
sera transforméefizz
si elle est en minuscule etFIZZ
si elle est en majuscule (f -> fizz, F -> FIZZ
).Chaque lettre qui a un index impair dans l'alphabet anglais sera transformée
buzz
si elle est en minuscule etBUZZ
si elle est en majuscule (e -> buzz, E -> BUZZ
).Prenons un exemple, pour illustrer l'algorithme, en utilisant la chaîne
CodeGolf
(espaces ajoutés pour plus de clarté):"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)
Si cela convient mieux à votre langue, vous pouvez également laisser des espaces simples entre les groupes (
fizz, buzz, FIZZ, BUZZ
). Par conséquent, un résultat commefizzBUZZbuzzbuzz
peut également être renvoyé sous la formefizz BUZZ buzz buzz
. Les autres séparateurs ne sont pas autorisés.
Cas de test:
Entrée -> Sortie "oeuf" -> "buzzbuzzbuzz" "CodeGolf" -> "BUZZbuzzfizzbuzzBUZZbuzzfizzfizz" "Réinitialiser" -> "FIZZbuzzbuzzbuzzfizz" "ATOM" -> "BUZZFIZZBUZZBUZZ" "yOuArEgReAt" -> "buzzBUZZbuzzBUZZfizzBUZZbuzzFIZZbuzzBUZZfizz"
Toute méthode standard d'E / S peut être utilisée.
Les échappatoires par défaut s'appliquent.
Vous êtes uniquement autorisé à saisir des données dans le type de chaîne native de votre langue. Il en va de même pour la sortie.
Vous pouvez supposer que l'entrée ne sera pas vide.
Le code le plus court en octets dans chaque langue gagne. Bonne chance et Fizz-Buzz!
Réponses:
Fusain ,
2624 octetsEssayez-le en ligne! Inspiré à l'origine par @CarlosAlejo. Edit: enregistré 2 octets en bouclant sur les lettres de fizz / buzz au lieu de les affecter à un temporaire. Explication:
la source
Ordinal(i)
renvoyait la position du caractèrei
dans sa chaîne d'origine, mais il renvoie sa valeur ASCII (code de caractère). Solution très intelligente, j'ai encore besoin d'améliorer beaucoup mes compétences en charbon de bois!C #, 92 octets
la source
x%2
directement en tant que booléen, sans avoir besoin de la<1
pièce? Si tel est le cas, vous pourrez peut-être enregistrer certains octets de cette façon.Python 3 ,
7369 octets4 octets grâce aux ovs.
Essayez-le en ligne!
la source
C (gcc) , 75 octets
Essayez-le en ligne!
la source
Java (OpenJDK 8) ,
105100949190 octetsEssayez-le en ligne!
Beaucoup jouable au golf, très octets, donc Java!
Très golfé par @KevinCruijssen de 9 octets!
la source
s->s.join("",s.chars().mapToObj(i->i>90?i%2<1?"fizz":"buzz":i%2<1?"FIZZ":"BUZZ").toArray(String[]::new));
Hélas, c'est 105 caractères :( Si seulement ils pouvaient ajouter lejoin
directement sur le flux ou intégrer untoList
, en fait, tout ce qui est sensé serait bien.getBytes()
place detoCharArray()
3 octets supplémentaires plus court:s->{for(int i:s.getBytes())System.out.print(i>90?i%2<1?"fizz":"buzz":i%2<1?"FIZZ":"BUZZ");}
toCharArray()
àgetBytes()
. :)JavaScript (ES6),
7977 octetsCas de test
Afficher l'extrait de code
la source
C #, 97 octets
la source
c%2>1?c>96?"fizz":"buzz":...
Gelée , 21 octets
Essayez-le en ligne!
la source
Pyth ,
2321 octetsSuite de tests .
la source
Anglais ordinaire ,
820632610 octetsM. Xcoder a suggéré d'éliminer un piège d'erreur inutile, qui a permis d'économiser 22 octets.
Code non golfé:
L'IDE en anglais simple est disponible sur github.com/Folds/english . L'IDE s'exécute sur Windows. Il se compile en code x86 32 bits.
la source
If the s is "", exit.
Fusain ,
4036 octetsEssayez-le en ligne!
Explication:
Une alternative avec le même nombre d'octets:
Essayez-le en ligne! ( Version verbeuse )
la source
Count
ouOrdinal
respectivement au lieu deFind
pour vous faire économiser quelques octets.if
compte comme une seule déclaration, vous n'avez donc pas besoin du par{}
. J'ai également enregistré un octet en déplaçant l'Uppercase
intérieur aTernary
: Essayez-le en ligne!Fθ«A⎇﹪℅ι²buzz¦fizzχ⎇№αι↥χχ
pour 26 octets. (Deverbosifier n'aime pas cette version.)> <> , 68 octets
Essayez-le en ligne ou regardez-le au terrain de pêche !
(Mais regardez la réponse d'Aaron qui est plus courte de 13 octets!)
Si vous n'êtes pas familier avec> <>, il y a un poisson qui nage dans le code en 2D et les bords s'enroulent. Les symboles
>
,<
,^
etv
définir la direction du poisson,/
et\
sont des miroirs qui reflètent et il?
signifie « faire l'instruction suivante si la chose en haut sur la pile est non nul, sinon sauter sur l'instruction suivante ».Dans la première ligne, le poisson prend un caractère d'entrée (
i
); si c'est -1 pour EOF, il arrête (:0(?;
); il obtient le charcode mod 2 (:2%$
); et il pousse un 1 ou 0 sur la pile selon que le charcode est inférieur ou supérieur au charcode de "^" ("^"(
). Les trois lignes suivantes redirigent le poisson vers la chaîne fizz / buzz de droite, puis la dernière ligne l'imprime (uneo
pour chaque caractère) et renvoie le poisson au début.la source
!
ou?
suivi d'un espace saute simplement l'espace, mais TIO attend jusqu'à la prochaine chose non spatiale à ignorer ...!
devrait sauter les espaces AFAIK, mais l'interprète en ligne remplit son espace de code avec des espaces, ce qui est probablement ce que vous voyez> <> , 55 octets
Basé sur Pas la réponse d' un arbre .
Au lieu de représenter les 4 sorties possibles dans le code, je ne représente que leurs versions en majuscules et j'ajoute 32 au code de caractère pour obtenir les équivalents minuscules.
Essayez-le en ligne!
Code modifié pour l' interpréteur en ligne , qui remplit son espace de code avec des cellules vides:
la source
Perl5 , 50 + 1 octets
Crée une liste de 128 éléments qui mappe les caractères ASCII au mot de code approprié.
la source
05AB1E , 22 octets
Essayez-le en ligne!
Explication
Solution alternative de 22 octets
la source
PHP , 67 octets
Essayez-le en ligne!
la source
F # ,
154153145 octetsenregistré
19 octets grâce à @Mr. XcoderEssayez-le en ligne!
la source
concat
et""
sur la dernière ligneMathematica, 134 octets
la source
Java 8, 89 octets
Cela suppose
import static java.util.stream.Collectors.*;
la source
q / kdb +, 48 octets
Solution:
Exemples:
Explication:
Assez simple, prenez la chaîne d'entrée, transtypez en valeurs ASCII, créez une liste de 1 ou 0 selon qu'elle est impaire ou paire (indice A = 65 = impair), puis utilisez cette liste pour indexer dans une liste de
fizz
etbuzz
. Cast ceci dans une chaîne, puis pour les cas où l'entrée est <91 (inférieure à un Z), nous appliquons laupper
fonction pour obtenir unFIZZ
ou unBUZZ
.q est interprété de droite à gauche:
la source
mod
et2
?mod[x;2]
si nous ne voulions pas d'espace, mais cela finit par 1 octet de plus!Ruby , 61 + 1 = 62 octets
Utilise le
-p
drapeau.Essayez-le en ligne!
la source
Swift 4 ,
144135 octetsNon-golfé:
Ce que je fais, c'est boucler sur chaque caractère de la chaîne. Je convertis chacun à sa valeur ASCII, vérifie ensuite s'il est pair ou impair, puis vérifie s'il est en majuscules ou en minuscules et affiche la valeur correspondante à partir de la boucle. Je joins ensuite tous les éléments du tableau résultant en une seule chaîne et je l'imprime.
Cette solution utilise Swift 4, il n'est donc pas encore possible de la tester facilement en ligne.
Merci à @ Mr.Xcoder de m'avoir sauvé 9 octets!
la source
error: value of type 'String' has no member 'map'
, car une chaîne n'est pas automatiquement convertie en liste lors de l'exécution.$0.characters.map{...}
func f(s:String){...}
, par conséquent, vous pouvez économiser 9 octets en utilisant le code suivant, qui utilise à laprint
place dereturn
: pastebin.com/06kiiGaJ . Si cela ne fonctionne pas, faites le moi savoir.R,
150123108 108 octetsDoit être plus court en utilisant ASCII?C'était plus court. Voir l'historique des modifications pour l'ancienne réponse, qui a été utiliséeletters
.Vérifie chaque lettre pour (1) si elle est en majuscule ou non (
>91
) et si c'est unfizz
ou unbuzz
.la source
Java
la source
public static void main
), soit une fonction. Actuellement, le vôtre est un extrait.