Descripción del desafío
Ciclo todas las letras de la primera parte del alfabeto en una dirección, y las letras de la segunda mitad del alfabeto en la otra. Otros personajes permanecen en su lugar.
Ejemplos
1: hola mundo
Hello_world //Input
Hell ld //Letters from first half of alphabet
o wor //Letters from second half of alphabet
_ //Other characters
dHel ll //Cycle first letters
w oro //Cycle second letters
_ //Other characters stay
dHelw_oroll //Solution
2: codegolf
codegolf
c deg lf
o o
f cde gl
o o
focdeogl
3 .: cadena vacía
(empty string) //Input
(empty string) //Output
Entrada
Cadena que necesita rotar. Puede estar vacio No contiene nuevas líneas.
Salida
Cadena de entrada girada, nueva línea final permitida
Puede ser escrita en la pantalla o devuelta por una función.
Reglas
- No se permiten lagunas
- Este es el código de golf, por lo que gana el código más corto en bytes para resolver el problema
- El programa debe devolver la solución correcta
Respuestas:
MATL , 29 bytes
Pruébalo en línea!
Explicación
fuente
Retina , 55 bytes
Pruébalo en línea!
Utiliza dos etapas de clasificación para rotar las letras de la primera y segunda mitad por separado.
fuente
05AB1E ,
444342 bytesExplicación
Genere una lista de las letras del alfabeto de ambos casos.
['Aa','Bb', ..., 'Zz']
Dividir en 2 partes y almacenar una copia en el registro.
Extraer las cartas de la entrada, que son una parte de la primera mitad del alfabeto, girarla y almacenar en X .
Extraiga las letras de la entrada que forman parte de la segunda mitad del alfabeto, gírelo y guárdelo Y .
Bucle principal
Pruébalo en línea!
Nota: El inicio
Ð
puede omitirse en 2sable para una solución de 41 bytes.fuente
<s>44</s>
todavía se ve como 44.Javascript (ES6),
155142138 bytesEditar: guardado
34 bytes usandounshift()
(inspirado en la respuesta de edc65)Cómo funciona
La
R
función toma un método de matriz como parámetrom
:Se usa por primera vez con el
push
método para almacenar caracteres extraídos ena[]
(primera mitad del alfabeto) yb[]
(segunda mitad del alfabeto). Una vez que estas matrices se han girado,R()
se llama por segunda vez con elshift
método para inyectar los nuevos caracteres en la cadena final.De ahí la sintaxis ligeramente inusual:
R`push`
yR`shift`
.Manifestación
fuente
a.unshift(a.pop(b.push(b.shift())))
CJam , 41 bytes
Pruébalo en línea!
Utiliza un enfoque similar a mi respuesta de combinación de vocales .
fuente
Python, 211 bytes
Lo mejor que pude hacer. Toma la cadena de STDIN e imprime el resultado en STDOUT.
alternativa con 204 Bytes, pero desafortunadamente imprime una nueva línea después de cada carácter:
fuente
Python 2, 149 bytes
fuente
JavaScript (ES6), 144
Usando la
parseInt
base 36 para separar la primera mitad, la segunda mitad y otras. Para cualquier personajec
, evalúoy=parseInt(c,36)
para quec '0'..'9' -> y 0..9
c 'a'..'m' or 'A'..'M' -> y 10..22
c 'n'..'z' or 'N'..'Z' -> y 23..35
c any other -> y NaN
Entonces
y=parseInt(c,36), x=(y>22)+(y>9)
dax==1
para la primera mitad,x==2
para la segunda mitad yx==0
para cualquier otra (ya queNaN
> cualquier número es falso)Primer paso: la cadena de entrada se asigna a una matriz de 0,1 o 2. Mientras tanto, todos los caracteres de la cadena se agregan a 3 matrices. Al final de este primer paso, la matriz 1 y 2 se giran en direcciones opuestas.
Segundo paso: se escanea la matriz asignada, reconstruyendo una cadena de salida que toma cada carácter de las 3 matrices temporales.
Menos golf
Prueba
fuente
Perl. 53 bytes
Incluye +1 para
-p
Ejecutar con la entrada en STDIN:
drotate.pl
:fuente
Python,
142133bytesUna mejor variación sobre el tema:
sin golf:
solución previa:
sin golf:
fuente
Ruby, 89 bytes
fuente
PHP, 189 bytes
Muy difícil jugar al golf ... Aquí está mi propuesta:
fuente