Desafío
Tomamos tres números enteros positivos a
, b
y c
como entrada. Usando estos enteros, primero cree una secuencia en el rango [0, c]
(inclusive en ambos extremos), en pasos de b
. Por ejemplo, para a=4, b=2, c=100
, la secuencia sería [0,2,4,...,96,98,100]
.
Para cada número en esta secuencia que es divisible entre a
, reemplácelo con la siguiente letra del alfabeto en minúscula, comenzando con la letra 'a' y volviendo a 'a' después de llegar a 'z'.
Ejemplo:
Entrada: a=4, b=2, c=100
Salida:a2b6c10d14e18f22g26h30i34j38k42l46m50n54o58p62q66r70s74t78u82v86w90x94y98z
Reglas de desafío:
- Puede suponer que
a
,b
yc
son enteros positivos solamente, dondeb ≤ a ≤ c
. - Puede suponer que
a
es un múltiplo deb
. - Puede suponer que
c
es divisible porb
. - La salida preferida es una sola cadena concatenada como la anterior, pero una lista / matriz también es aceptable.
Casos de prueba:
Input: a=4, b=2, c=100
Output:
a2b6c10d14e18f22g26h30i34j38k42l46m50n54o58p62q66r70s74t78u82v86w90x94y98z
Input: a=9, b=3, c=174
Output:
a36b1215c2124d3033e3942f4851g5760h6669i7578j8487k9396l102105m111114n120123o129132p138141q147150r156159s165168t174
Input: a=10, b=2, c=50
Output:
a2468b12141618c22242628d32343638e42444648f
Input: a=25, b=1, c=25
Output:
a123456789101112131415161718192021222324b
Input: a=6, b=6, c=48
Output:
abcdefghi
Input: a=6, b=3, c=48
Output: a3b9c15d21e27f33g39h45i
Input: a=2, b=1, c=100
Output: a1b3c5d7e9f11g13h15i17j19k21l23m25n27o29p31q33r35s37t39u41v43w45x47y49z51a53b55c57d59e61f63g65h67i69j71k73l75m77n79o81p83q85r87s89t91u93v95w97x99y
Realmente me gustaría ver una respuesta en PHP , pero este desafío está abierto a cualquier lenguaje. Este es codegolf , por lo que la respuesta debe ser lo más breve posible. Se aplican reglas estándar para funciones / programas y las lagunas predeterminadas están prohibidas .
[codegolf]
es la más común que recomendaría. También mencionado por JoKing, no se recomienda hacerlo específico del idioma. Es mejor abrirlo a todos los idiomas. En cuanto al desafío en sí, especifique un poco más y agregue algunos casos de prueba más. Según el ejemplo, puedo ver que el rango es[0,c]
, pero esto debería quedar claro sin mirar el ejemplo.'z'
a'a'
. ¿Podría incluir uno que sí lo haga?Respuestas:
PHP , 67 bytes
En primer lugar, ¡gracias por publicar un desafío tan genial! Realmente disfruté resolverlo :) Ahora, aquí está mi solución de 67 bytes:
Para ejecutarlo:
O Pruébelo en línea!
Aquí está la misma solución sin pretensiones y con comentarios explicativos:
Hice una solución de 60 bytes, pero no se ajusta :(
Pruébalo en línea!
fuente
Japt , 15 bytes
¡Pruébalo en línea!
Explicación
fuente
c,a,b
.R ,
6563 bytesPruébalo en línea!
¡2 bytes guardados gracias a JayCe!
Devuelve una lista de cadenas, ya que R obligará a los números a cadenas. Para imprimir, simplemente reemplace el final
z
concat(z,sep="")
.fuente
l=
no se requiere. TIOClojure,
847977 bytesDando un poco de amor a Lisp
Pruébalo en línea!
(-7 bytes gracias a @NikoNyrh!)
fuente
#(...)
y utilizafn
para expresar la interna. Mientras lo hace, puede reemplazarlomap
confor
construir y guardar más 4 bytes.%1
puede ser reemplazado por%
;)Java 10,
9383 bytesPruébelo en línea aquí . Gracias a Scrooble por jugar al golf 10 bytes.
Sin golf:
fuente
Perl 6 ,
6050 bytesPruébalo
Pruébalo
fuente
->\a,\b,\c
: use just$^a
etc. Ychr 97+$++%26
es bastante más corto que("a".."z")[$++%26]
. Finalmente, puede omitir la concatenación porque el desafío no lo requiere. Eso ahorraría 10 bytes en total, dejando 50JavaScript (Node.js) , 62 bytes
Pruébalo en línea!
fuente
05AB1E ,
1715 bytes-2 bytes gracias a @MagicOctopusUrn .
Toma la entrada en el orden
bca
.Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
/ݹ*vyD³ÖiA¾è¼}?
es 16, solo duplica el eny
lugar de usarë
, lo?
que ignorará si empuja un alfabeto char. En realidad,/ݹ*εD³ÖiA¾è¼}?
funciona para 15 pares, porque estamos sobreescribiendo la matriz de salida, entonces puede vincular el ganador actual> :).ë
.C (gcc) ,
7472 bytesPruébalo en línea!
fuente
Python 2,
8070 bytesDevuelve una lista, ya que el OP dijo que es aceptable.
Enfoque muy diferente de la otra respuesta de Python 2 .
Pruébalo en línea!
fuente
CJam , 23 bytes
Pruébalo en línea!
Leer la entrada como
b a c
y soltarla@
sería de 22 bytes (no estoy seguro si eso es válido).fuente
Python 2 ,
6563 bytesDevuelve una lista, ya que el OP dijo que es aceptable.
Pruébalo en línea!
Versiones anteriores utilizadas durante el proceso creativo (trabajando hacia atrás):
84 bytes
Devuelve una expresión generadora.
111 bytes
Utiliza un generador para el alfabeto y devuelve una lista.
fuente
next
. Agradable.PHP , 79 bytes
Nota: No es muy bueno en PHP
Pruébalo en línea!
PHP , 84 bytes
Este es el mismo código anterior solo en formato de función (ya que quería una respuesta PHP tal vez esto sea mejor para usted)
Pruébalo en línea!
fuente
Excel VBA, 76 bytes
Toma la entrada,
a
,b
, yc
desde[A1]
,[B1]
y[C1]
, respectivamente, a continuación, da salida a la ventana inmediata VBE.fuente
Python 2 , 83 bytes
Pruébalo en línea!
fuente
Kotlin,
8079 bytes-1 gracias a OOBalance !
Pruébalo en línea!
¡Mi primera vez jugando al golf (o haciendo cualquier otra cosa) en Kotlin! Probablemente se puede mejorar.
Muy similar a esta respuesta de Java , me di cuenta después de escribirla. Ahorre en
return
y pierda en el ternario por casi el mismo puntaje.fuente
else
.Python3 -
111,101,98, 94 bytesProbablemente no sea el más corto, pero hay margen de mejora
Pruébalo en línea!
fuente
next(q)if x%a==0else x for x in[y*b
Carbón de leña , 22 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
Haskell ,
7169 bytesPruébalo en línea!
71 bytes anteriores:
Pruébalo en línea!
Explicación:
fuente
CJam ,
6463 bytes ( ouch )Pruébalo en línea!
Explicación
¡Esto definitivamente podría mejorarse, así que siéntase libre de unirse!
Cambios
¡Helen cortó un byte!
Viejo:
97:Y;riri:Bri\/1+,[{B*}*]{X\_@\%0={Yc\Y):Y'{i={97:Y;}&}{X\}?}fX;
nuevo:
97:Y;riri:Bri\/),[{B*}*]{X\_@\%0={Yc\Y):Y'{i={97:Y;}&}{X\}?}fX;
Al cambiar
1+
a)
podemos cortar un byte.fuente
Jalea , 16 bytes
Un programa completo que toma argumentos
c b a
que imprime el resultado.Pruébalo en línea!
fuente
Clojure, 117 bytes
Que imperativo. : /
fuente
C (gcc / clang),
8068 bytesPuerto de mi respuesta Java . Pruébelo en línea aquí .
fuente
printf(L"搥挥"+!(i%a),i%a?i:i/a%26+97)
lugar dei%a?printf("%d",i):putchar(i/a%26+97)
Jalea , 14 bytes
Pruébalo en línea!
fuente
Python 2 y 3 -
123128 BytesTendrás que ponerlo
f=
delantelambda
y luego llamarlo,f(a,b,c)
pero estoy bastante seguro de que está permitido.fuente
Ruby ,
59 5855 bytesPruébalo en línea!
Devuelve una lista
fuente