Este desafío está inspirado en esta muy buena respuesta de TidB.
En la respuesta de TidB, cada ocho caracteres está en el orden correcto: gnilwoB edoC
( Code Bowling
hacia atrás). Sin embargo, las otras cadenas están en un orden extraño y aleatorio.
Tu desafío es arreglar esto.
Tome una cadena (no vacía) y un entero positivo n
como entrada. La cadena contendrá caracteres ASCII en el rango: 32-126 (espacio para tilde).
Debe ordenar la cadena en orden ascendente (vista desde la izquierda, en función del valor del código ASCII), pero omita todos n
los caracteres, comenzando desde el final de la cadena. Como ejemplo, tomemos la cadena abcdABC123
como entrada y n=4
luego obtendremos:
abcdABC123 <- Input string. (n=4)
_b___B___3 <- These will not be sorted (every 4th starting from the end)
1_2AC_acd_ <- The remaining characters, sorted
1b2ACBacd3 <- The final string (the output)
Otro ejemplo:
9876543210 <- Input string (n=2)
_8_6_4_2_0 <- These will not be sorted
1_3_5_7_9_ <- The remaining characters, sorted
1836547290 <- The final string (the output)
La cadena de entrada se puede tomar en un formato opcional (cadena, lista de caracteres, lista de cadenas de caracteres individuales ...). El entero de entrada también se puede tomar en un formato opcional.
Casos de prueba:
El formato será n=__
, seguido de la cadena de entrada en la siguiente línea. La salida está en la línea de abajo.
n=1 (All elements will stay in place)
nafgaksa1252#"%#
nafgaksa1252#"%#
n=214 (The last character will stay in place. All other are sorted.
&/lpfAVD
&/AVflpD
n=8
g7L9T E^n I{><#ki XSj!uhl y= N+|wA}Y~Gm&o?'cZPD2Ba,RFJs% V5U.W;1e 0_zM/d$bH`@vKoQ 43Oq*C
g n !#$%&'i*+,./01l234579;w<=>?@ADoEFGHIJKBLMNOPQR STUVWXYeZ^_`abcdhjkmqsuovyz{|}~C
PHP, 101 bytes
los índices de cadena negativos (PHP 7.1) ahorran 21 bytes, y posiblemente el día:
Corre con
php -nr '<code>' '<string>' <N>
.Descompostura
fuente
$i-=1
no$i--
?$i--
no funciona si$i
es asíNULL
.--$i
, lo que necesitaría tampoco lo hace. ;)Octava ,
6554 bytesPruébalo en línea!
Utiliza la indexación lógica para crear una matriz de caracteres "fijos" y "ordenados". Explicación:
La forma en que creé
l
requiere ques
no sea cero, lo que creo que es un requisito razonable, ya que muchos idiomas usan\0
como delimitador de fin de cadena.fuente
l
y usa un vector de números de índice directamentePython 2, 191 bytes
Sí, estoy seguro de que esta es una solución terrible.
Pruébalo en línea
No me voy a molestar en explicarlo. Estuvo bien hasta que me di cuenta de que necesita ser indexado desde el final. Ahora es un monstruo. En este punto, me alegro de que funcione.
fuente
JavaScript (ES6),
10093 bytesToma entrada en la sintaxis de curry
(s)(n)
.Formateado y comentado
Casos de prueba
Mostrar fragmento de código
fuente
Perl 5 , 94 bytes
88 bytes de código +
-F -pl
banderas.Pruébalo en línea!
En mi opinión, es demasiado largo, pero ya no es tan feo ... De todos modos, todavía estoy tratando de jugarlo más.
fuente
Jalea ,
1413 bytesPrograma completo que imprime la cadena a STD *.
Pruébalo en línea!
¿Cómo?
No puedo evitar pensar quehay una manera de usar el hecho de queḢ
modifica su entrada* para una función, uno querría aplanar la salida en una sola lista con
F
.Por ejemplo, una entrada de
"abcdABC123"
,4
produce: en[[['1'],['b']],[['2','A','C'],['B']],[['a','c',',d'],['3']]]
lugar de:
['1','b','2','A','C','B','a','c',',d','3']
fuente
Python + NumPy ,
115114 bytesToma una lista de Python regular como entrada (no estaba seguro de si tomar una matriz se consideraría kosher); devuelve una matriz NumPy que contiene el resultado.
Funciona enmascarando los índices relevantes y ordenando el resto.
fuente
Python 2,
119113bytesCrea una lista de todos los caracteres que se ordenarán, los ordena y los fusiona para imprimirlos, evitando algunos cambios a través de la indexación negativa.
fuente
print"".join(sorted(l[~a]for a in i if a%n)[-a+a/n]if a%n else l[~a]for a in i)[::-1]
ahorra 5 bytesRuby, 64 bytes
Utiliza expresiones regulares para capturar todos los caracteres irrelevantes, tanto para reemplazar como para ordenar.
Pruébalo en línea
fuente