¡Ayuda! ¡Mis luces completamente automatizadas de Darks Separator V3001.01 se rompieron! :(
Pautas
Tarea
Escriba un programa que tome una entrada de una matriz (o una lista en algunos idiomas) de cualquier cantidad de cadenas que sean la letra L o la letra D (que representan luces u oscuras) y generará una matriz que contiene dos matrices, una con todas las L y una con todas las D.
Reglas
- Es el código de golf, por lo que gana la respuesta más corta en bytes
- La entrada solo contendrá mayúsculas
- Debe haber la misma cantidad de L en la salida que en la entrada, lo mismo ocurre con las D
- La entrada puede tener solo un elemento (o tal vez incluso cero elementos)
- Si una o ambas matrices de salida no contienen elementos, genere una lista vacía (en algunos idiomas esto puede significar que necesita generar una cadena)
- Siempre tenga la primera matriz sea la matriz de L
Salida de ejemplo:
["L","D","L","D","D"] -> [["L","L"],["D","D","D"]]
["L","L","L"] -> [["L","L","L"],[]]
["D","D"] -> [[],["D","D"]]
[] -> [[],[]]
code-golf
array-manipulation
sorting
Amorris
fuente
fuente
"LDLDD" -> "LL DDD"
o algo así?["L","L",["D","D","D"]]
.Respuestas:
APL, 8 bytes
Explicación:
⊂
: entrada cerrada~⍨¨
: sin cada'DL'
: 'D' y 'L'Ejemplos:
fuente
'DL'
pero no'LD'
?'LD'∩⍨¨⊂
o⍞∘∩¨'LD'
puede ser más fácil de explicar.Python 3 , 37 bytes
Pruébalo en línea!
fuente
Haskell , 28 bytes
Pruébalo en línea!
Si la entrada puede ser una lista de caracteres, se puede eliminar el
[]
alrededorc
.fuente
PHP, 46 bytes
Se supone que la lista dada es:
$arr = ['L','L','D','D','L','D','D','D','D','L'];
foreach($arr as $b){$a[$b][]=$b;};print_r($a);
fuente
$argv
lugar de$arr
y esperar que la secuencia de comandos se ejecute desde la línea de comandos comophp -f golf.php L L D D L D D D D L
, pero de nuevo tiene que ir alrededor de $ argv [0], que es el nombre del archivofor(;$b=$argv[++$i];)$a[$b][]=$b;print_r($a);
o<?foreach($_GET as$b)$a[$b][]=$b;print_r($a);
Mathematica, 27 bytes
Función pura que toma una lista de
L
sysD
(símbolos, no caracteres / cadenas) como entrada y devuelve una lista de dos listas. Por ejemplo,vuelve
{{L, L, L}, {D, D}}
. Pruébalo en línea!Gather
por sí mismo es cerca de lo que queremos, pero no cumple con la especificación de dos maneras: no produce listas vacías si la entrada no se encuentraL
s oD
s, y no siempre especieL
es a la izquierda. Reemplazar la entrada#
con{L,D}~Join~#
resuelve ambos problemas a la vez: significa que habrá al menos unoL
y al menos unoD
, y losL
s se devolverán primero desde queL
se encontró uno primero.Rest/@
luego elimina la inicialL
yD
.(Intenté usar una solución
Count
, pero debido a problemas de curry, no parecía ser más corta:±q_:=#~Table~Count[q,#]&/@{L,D}
son 31 bytes).fuente
Cases@@@{{#,L},{#,D}}&
, para 22 bytes?Haskell, 32 bytes
Solo una función de biblioteca aburrida.
Pruébalo en línea!
fuente
Rubí , 26 bytes
Pruébalo en línea!
fuente
PHP7,
5245 bytes-7 bytes gracias a @ Jörg Hülsermann
Usar con CLI como
php -r a.php L L L D D L D
El script revisa los argumentos proporcionados y los agrega a una matriz en función de su valor.
fuente
-r
opción de uso en lugar de-f
eliminar<?php
y soltar el espacio después deas
Lisp común,
6665 bytesPruébalo en línea!
Si, en lugar de cadenas, usamos símbolos, entonces es mucho más corto:
Lisp común,
424140 bytesPruébalo en línea!
fuente
Raqueta , 48 bytes
Simplemente aplique esta función anónima a, por ejemplo,
'(L D L D D L)
fuente
Mathematica,
2218 bytes¡4 bytes guardados por el genio de CalculatorFeline!
¡Pruébelo en línea o en el sandbox de Wolfram !
La entrada es una lista de los símbolos
L
yD
, no cadenas, solo las letras en sí mismas, como en la respuesta de Greg Martin . La sintaxis#|L
es la abreviatura deAlternatives[#,L]
, pero la@@@
sintaxis reemplaza la cabezaAlternatives
conCases
, por lo que este código es equivalente a{Cases[#,L],Cases[#,D]}&
.fuente
{#,x}
puede ser#|x
de -4 bytes.@@
y@@@
el trabajo con cualquier cabeza, no sóloList
. Si|
no funciona, todavía se puede salvar en algunos casos con&&
,||
o**
..
operadores aritméticos y.#.L|#.D
Java 8, 105 bytes
Consejos bienvenidos.
Nuevo en PPCG, ¿debo incluirloimport java.util.*;import java.util.stream.*;
en el recuento de bytes?No compite, no crea listas vacías con una entrada vacía. Gracias a Nevay por guardar algunos bytes.
fuente
Stream#of
lugar deArrays#stream
reducir las importaciones ajava.util.stream.*
y en"D"::equals
lugar dek->k.equals("D")
. Además, el código no cumple los requisitos, ya que no genera una lista vacía si no hayL
/D
está presente (casos de prueba 2-4).Prólogo (SWI) ,
42, 37 bytesPruébalo en línea!
Dado que
W
es una lista de lavado,w/3
se unificaráL
yD
en listas de Luces y Oscuros respectivamente, al dividir el lavado contra un predicado que tenga éxito si un artículo es una Luz.[Editar: golfed -5 gracias a Fatalize ]
fuente
l('L').
es 5 bytes más corto quel(X):-X='L'.
Japt ,
131210 bytesPruébalo (
-Q
marca solo con fines de visualización)Explicación
Entrada implícita de la matriz
U
.Genere la matriz
[0,1]
y pase cada elemento a través de una función,X
siendo el elemento actual.Filtre
U
comprobando la igualdad ...... con el carácter en cadena
LD
en el índiceX
.fuente
¥
debería funcionar ..."[["L","L","D","D"],[]]
"No, no voy allí :)" - yo 2017¥
.Pyth ,
109 bytesBanco de pruebas .
fuente
.g
parece ser más corto .05AB1E , 8 bytes
Pruébalo en línea!
fuente
Javascript (ES6), 37 bytes
Esto se basa en una respuesta Javascript (ES6) (ahora eliminada).
Versión sin golf:
Fragmento de código de ejemplo:
fuente
C #, 61 bytes
Versión completa / formateada:
fuente
F # , 37 bytes
Pruébalo en línea!
Toma la entrada como una lista de cadenas y devuelve dos listas, la primera con elementos donde
fun a -> a="L"
es verdadero y la otra con elementos que resultan en falso.fuente
Jalea , 10 bytes
Pruébalo en línea!
En Jelly, una cadena es una lista de cadenas Python de 1 carácter, por ejemplo
['a', 'b', 'c']
. Es por eso que obtienes resultados como[[['L'], ['L']], [['D'], ['D'], ['D']]]
, ya que las cadenas Jelly 1-char se comportan igual.No funciona como un programa completo, de ahí
ÇŒṘ
la parte inferior.fuente
string->char[]
automáticamente?W€€
papel.Perse , 21 bytes
Puedo o no haber implementado la función de partición de lista específicamente para este desafío. Toma la entrada como una matriz de cadenas.
fuente
Casco , 7 bytes
Pruébalo en línea!
Explicación
fuente
Java 8,
110106 bytes-4 bytes gracias a @Nevay .
Explicación:
Pruébalo aquí
fuente
a->{String[]r={"",""};for(char c:a)r[c/69]+=c;return new char[][]{r[1].toCharArray(),r[0].toCharArray()};}
(-4 bytes)Octava, 21 bytes
La entrada es una matriz de caracteres, la salida es una matriz de celdas. Reciclado de mi respuesta aquí .
Sample execution on ideone.
fuente
R, 35 bytes
Try it online!
Reads from stdin.
fuente
Julia, 26 bytes
fuente
Haskell (Lambdabot), 41 bytes
Try it online!
fuente
PowerShell, 27 bytes
Try it online!
Edit: previously
$args.where({$_-eq'L'},'sp')
for 28 bytes. Could be$args.where({+"0x$_"},'sp')
for 27 if not for the rule that L's must come first.fuente
CJam, 14 bytes
Input is a list of characters (string), output is a list of lists of characters (list of strings).
Try it online!
Explanation:
fuente
Perl 5, 70 bytes
Try it online!
fuente