Se le dará una cadena que solo contiene letras del alfabeto inglés, tanto en minúsculas como en mayúsculas (ASCII 65-90 y 97-122). Su tarea es generar la versión Fizz-Buzzified de String.
¿Cómo Fizz-Buzzify una cadena?
Cada letra que tenga un índice par en el alfabeto inglés (el alfabeto debe estar indexado en 1
a->1,b->2,...,z->26
) se convertirá enfizz
minúsculas yFIZZ
en mayúsculas (f -> fizz, F -> FIZZ
).Cada letra que tenga un índice impar en el alfabeto inglés se convertirá
buzz
si está en minúscula yBUZZ
si está en mayúscula (e -> buzz, E -> BUZZ
).Veamos un ejemplo, para ilustrar el algoritmo, usando la cadena
CodeGolf
(espacios añadidos para mayor claridad):"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 es más conveniente para su idioma, también puede dejar espacios individuales entre los grupos (
fizz, buzz, FIZZ, BUZZ
). Por lo tanto, un resultado comofizzBUZZbuzzbuzz
también se puede devolver comofizz BUZZ buzz buzz
. No se permiten otros separadores.
Casos de prueba:
Entrada -> Salida "huevo" -> "buzzbuzzbuzz" "CodeGolf" -> "BUZZbuzzfizzbuzzBUZZbuzzfizzfizz" "Restablecer" -> "FIZZbuzzbuzzbuzzfizz" "ATOM" -> "BUZZFIZZBUZZBUZZ" "yOuArEgReAt" -> "buzzBUZZbuzzBUZZfizzBUZZbuzzFIZZbuzzBUZZfizz"
Se puede usar cualquier método estándar para E / S.
Se aplican las lagunas predeterminadas .
Solo puede ingresar datos en el tipo de cadena nativo de su idioma. Lo mismo se aplica para la salida.
Puede suponer que la entrada no estará vacía.
El código más corto en bytes en cada idioma gana. Buena suerte y Fizz-Buzz!
Respuestas:
Carbón ,
2624 bytesPruébalo en línea! Originalmente inspirado por @CarlosAlejo. Editar: guardado 2 bytes al recorrer las letras de fizz / buzz en lugar de asignar a un temporal. Explicación:
fuente
Ordinal(i)
devolvía la posición deli
carácter en su cadena original, pero devuelve su valor ASCII (código de carácter). ¡Una solución muy inteligente, todavía necesito mejorar mucho mis habilidades con el carbón!C #, 92 bytes
fuente
x%2
directamente como booleano, sin necesidad de la<1
parte? Si es así, puede guardar algunos bytes de esa manera.Python 3 ,
7369 bytes4 bytes gracias a los ovs.
Pruébalo en línea!
fuente
C (gcc) , 75 bytes
Pruébalo en línea!
fuente
Java (OpenJDK 8) ,
105100949190 bytesPruébalo en línea!
Mucho golfable, muy bytes, ¡así que Java!
Muy jugado por @KevinCruijssen por 9 bytes!
fuente
s->s.join("",s.chars().mapToObj(i->i>90?i%2<1?"fizz":"buzz":i%2<1?"FIZZ":"BUZZ").toArray(String[]::new));
Por desgracia, tiene 105 caracteres de longitud :( Si solo pudieran agregarjoin
directamente en la secuencia o integrar untoList
, en realidad, cualquier cosa sensata sería buena.getBytes()
lugar detoCharArray()
es 3 bytes más cortos:s->{for(int i:s.getBytes())System.out.print(i>90?i%2<1?"fizz":"buzz":i%2<1?"FIZZ":"BUZZ");}
toCharArray()
agetBytes()
. :)JavaScript (ES6),
7977 bytesCasos de prueba
Mostrar fragmento de código
fuente
C #, 97 bytes
fuente
c%2>1?c>96?"fizz":"buzz":...
Jalea , 21 bytes
Pruébalo en línea!
fuente
Pyth ,
2321 bytesBanco de pruebas .
fuente
La llanura Inglés ,
820632610 bytesEl Sr. Xcoder sugirió eliminar una trampa de error innecesaria, que ahorró 22 bytes.
Código sin golf:
El IDE en inglés simple está disponible en github.com/Folds/english . El IDE se ejecuta en Windows. Se compila en código x86 de 32 bits.
fuente
If the s is "", exit.
Carbón ,
4036 bytesPruébalo en línea!
Explicación:
Una alternativa con el mismo número de bytes:
Pruébalo en línea! ( Versión detallada )
fuente
Count
oOrdinal
respectivamente en lugar deFind
guardar algunos bytes.if
cuenta como una sola declaración, por lo que no necesita el{}
s. También guardé un byte moviendo elUppercase
interior aTernary
: ¡ Pruébelo en línea!Fθ«A⎇﹪℅ι²buzz¦fizzχ⎇№αι↥χχ
para 26 bytes. (A Deverbosifier no le gusta esta versión.)> <> , 68 bytes
¡Pruébelo en línea o mírelo en el área de juegos para peces !
(¡Pero mira la respuesta de Aaron, que es 13 bytes más corta!)
Si no está familiarizado con> <>, hay un pez que nada a través del código en 2D y los bordes se envuelven. Los símbolos
>
,<
,^
yv
establecer la dirección de los peces,/
y\
son espejos que reflejan la misma, y?
significa "hacer la siguiente instrucción si la cosa superior de la pila no es cero, de lo contrario saltar por encima de la siguiente instrucción".En la primera línea, el pez toma un carácter de input (
i
); si es -1 para EOF, se detiene (:0(?;
); obtiene el mod charcode 2 (:2%$
); y empuja un 1 o 0 en la pila dependiendo de si el código de char es menor o mayor que el código de char de "^" ("^"(
). Las siguientes tres líneas redirigen al pez a la cadena derecha de fizz / buzz, luego la última línea lo imprime (unao
para cada personaje) y envía el pez de regreso al inicio.fuente
!
o?
seguido de un espacio, solo se salta el espacio, pero TIO espera hasta que salte la próxima cosa no espacial ...!
debería omitir espacios AFAIK, pero el intérprete en línea rellena su espacio de códigos con espacios, que es probablemente lo que está viendo> <> , 55 bytes
Basado en la respuesta de Not a tree .
En lugar de representar los 4 resultados posibles en el código, solo represento sus versiones en mayúsculas y agrego 32 al código de caracteres para obtener los equivalentes en minúsculas.
Pruébalo en línea!
Código modificado para el intérprete en línea , que rellena su espacio de código con celdas vacías:
fuente
Perl5 , 50 + 1 bytes
Crea una lista de 128 elementos que asigna caracteres ASCII a la palabra de código adecuada.
fuente
05AB1E , 22 bytes
Pruébalo en línea!
Explicación
Solución alternativa de 22 bytes
fuente
PHP , 67 bytes
Pruébalo en línea!
fuente
F # ,
154153145 bytesahorrado
19 bytes gracias a @Mr. XcoderPruébalo en línea!
fuente
concat
y""
en la última líneaMathematica, 134 bytes
fuente
Java 8, 89 bytes
Asume
import static java.util.stream.Collectors.*;
fuente
q / kdb +, 48 bytes
Solución:
Ejemplos:
Explicación:
Bastante sencillo, tome la cadena de entrada, convierta en valores ASCII, cree una lista de 1 o 0 dependiendo de si es impar o par (pista A = 65 = impar), luego use esta lista para indexar en una lista de
fizz
ybuzz
. Convierta esto en una cadena, y luego para los casos en que la entrada sea <91 (inferior a una Z) aplicaremos laupper
función para obtener aFIZZ
o aBUZZ
.q se interpreta de derecha a izquierda:
fuente
mod
y2
?mod[x;2]
si no quisiéramos espacios en blanco, ¡pero eso termina siendo 1 byte más!Ruby , 61 + 1 = 62 bytes
Usa la
-p
bandera.Pruébalo en línea!
fuente
Swift 4 ,
144135 bytesSin golf:
Lo que estoy haciendo es recorrer cada carácter en la cadena. Convierto cada uno a su valor ASCII, luego verifico si es par o impar, y luego verifico si es mayúscula o minúscula y obtengo el valor correspondiente del bucle. Luego unir todos los elementos de la matriz resultante en una sola cadena e imprimirlo.
Esta solución utiliza Swift 4, por lo que todavía no hay forma de probarlo fácilmente en línea.
¡Gracias a @ Mr.Xcoder por salvarme 9 bytes!
fuente
error: value of type 'String' has no member 'map'
, porque una cadena no se convierte automáticamente en una lista en tiempo de ejecución.$0.characters.map{...}
func f(s:String){...}
por lo que puede guardar 9 bytes utilizando el siguiente código, que utiliza enprint
lugar dereturn
: pastebin.com/06kiiGaJ . Si no funciona, házmelo saber.R,
150123108 bytesTiene que ser más corto usando ASCII?Fue más corto. Ver historial de edición de respuesta de edad, que utilizaletters
.Comprueba cada letra para (1) si es mayúscula o no (
>91
) y si es afizz
o abuzz
.fuente
Java
fuente
public static void main
) o una función. Actualmente, el tuyo es un fragmento.