Aidez-moi! ma lumières complètement automatisées de Darks Separator V3001.01 sont tombées en panne! :(
Des lignes directrices
Tâche
Écrivez un programme qui prendra une entrée d'un tableau (ou une liste dans certaines langues) de n'importe quelle quantité de chaînes qui sont soit la lettre L ou la lettre D (représentant des lumières ou des ténèbres) et produira un tableau qui contient deux tableaux, un avec tous les L et un avec tous les D.
Règles
- C'est le golf de code, donc la réponse la plus courte en octets l'emporte
- L'entrée ne contiendra que des majuscules
- Il doit y avoir le même nombre de L dans la sortie que dans l'entrée, il en va de même pour les D
- L'entrée ne peut avoir qu'un seul élément (ou peut-être même zéro élément)
- Si l'un ou les deux tableaux de sortie ne contiennent aucun élément, affichez une liste vide (dans certaines langues, cela peut signifier que vous devez générer une chaîne)
- Le premier tableau doit toujours être le tableau des L
Exemple de sortie:
["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
la source
la source
"LDLDD" -> "LL DDD"
ou quelque chose comme ça?["L","L",["D","D","D"]]
.Réponses:
APL, 8 octets
Explication:
⊂
: entrée fermée~⍨¨
: sans chacun'DL'
: «D» et «L»Exemples:
la source
'DL'
mais pas'LD'
?'LD'∩⍨¨⊂
ou⍞∘∩¨'LD'
peut être plus facile à expliquer.Python 3 , 37 octets
Essayez-le en ligne!
la source
Haskell , 28 octets
Essayez-le en ligne!
Si l'entrée peut être une liste de caractères, le
[]
contourc
peut être supprimé.la source
PHP, 46 octets
La liste donnée supposée est:
$arr = ['L','L','D','D','L','D','D','D','D','L'];
foreach($arr as $b){$a[$b][]=$b;};print_r($a);
la source
$argv
place de$arr
et s'attendre à ce que le script soit exécuté à partir de la ligne de commande en tant quephp -f golf.php L L D D L D D D D L
- mais là encore, vous devez faire le tour de $ argv [0] qui est le nom du fichierfor(;$b=$argv[++$i];)$a[$b][]=$b;print_r($a);
ou<?foreach($_GET as$b)$a[$b][]=$b;print_r($a);
Mathematica, 27 octets
Fonction pure prenant une liste de
L
s etD
s (symboles, pas des caractères / chaînes) en entrée et renvoyant une liste de deux listes. Par exemple,retourne
{{L, L, L}, {D, D}}
. Essayez-le en ligne!Gather
en soi est proche de ce que nous voulons, mais ne répond pas à la spécification de deux manières: il ne produit pas de listes vides si l'entrée manqueL
s ouD
s, et il ne trie pas toujoursL
s vers la gauche. Le remplacement de l'entrée#
par{L,D}~Join~#
résout les deux problèmes à la fois: cela signifie qu'il y aura au moins unL
et au moins unD
, et lesL
s seront retournés en premier car un aL
été rencontré en premier.Rest/@
supprime ensuite l'initialeL
etD
.(J'ai essayé une solution en utilisant
Count
, mais en raison de problèmes de curry, elle ne semblait pas être plus courte:±q_:=#~Table~Count[q,#]&/@{L,D}
31 octets.)la source
Cases@@@{{#,L},{#,D}}&
pour 22 octets?Haskell, 32 octets
Juste une fonction de bibliothèque ennuyeuse.
Essayez-le en ligne!
la source
Rubis , 26 octets
Essayez-le en ligne!
la source
PHP7,
5245 octets-7 octets grâce à @ Jörg Hülsermann
Utiliser avec CLI en tant que
php -r a.php L L L D D L D
Le script passe en revue les arguments fournis et les ajoute à un tableau en fonction de sa valeur.
la source
-r
option using au lieu de-f
supprimer<?php
et de supprimer l'espace après leas
Lisp commun,
6665 octetsEssayez-le en ligne!
Si, au lieu de chaînes, nous utilisons des symboles, alors c'est beaucoup plus court:
Lisp commun,
424140 octetsEssayez-le en ligne!
la source
Raquette , 48 octets
Il suffit d'appliquer cette fonction anonyme à, par exemple,
'(L D L D D L)
la source
Mathematica,
2218 octets4 octets économisés par le génie de CalculatorFeline!
Essayez-le en ligne ou dans le bac à sable Wolfram !
Input is a list of the symbols
L
andD
— not strings, just the letters on their own, like in Greg Martin's answer. The syntax#|L
is shorthand forAlternatives[#,L]
, but the@@@
syntax replaces the headAlternatives
withCases
, so this code is equivalent to{Cases[#,L],Cases[#,D]}&
.la source
{#,x}
can be#|x
for -4 bytes.@@
and@@@
work with any head, not justList
. If|
doesn't work, you can still save in some cases with&&
,||
, or**
..
and arithmetic operators.#.L|#.D
Java 8, 105 bytes
Tips welcome.
New to PPCG, do I have to includeimport java.util.*;import java.util.stream.*;
in the byte count?Non-competing, it doesn't create empty lists with an empty input. Thanks to Nevay for saving some bytes.
la source
Stream#of
instead ofArrays#stream
to reduce the imports tojava.util.stream.*
and"D"::equals
instead ofk->k.equals("D")
. Besides that the code doesn't meet the requirements as it does not output an empty list if noL
/D
is present (test-cases 2-4).Prolog (SWI),
42, 37 bytesTry it online!
Given that
W
is a list of washing,w/3
will unifyL
andD
into lists of Lights and Darks respectively, by partitioning the washing against a predicate which succeeds if an item is a Light.[Edit: golfed -5 thanks to Fatalize]
la source
l('L').
is 5 bytes shorter thanl(X):-X='L'.
Japt,
131210 bytesTest it (
-Q
flag for visualisation purposes only)Explanation
Implicit input of array
U
.Generate the array
[0,1]
and pass each element through a function, withX
being the current element.Filter
U
by checking for equality......with the character in string
LD
at indexX
.la source
¥
should work..."[["L","L","D","D"],[]]
"Nope, not going there :)" - me 2017¥
.Pyth,
109 bytesTest suite.
la source
.g
seems to be shorter.05AB1E, 8 bytes
Try it online!
la source
Javascript (ES6), 37 bytes
This is based on a (now deleted) Javascript (ES6) answer.
Ungolfed version:
Example code snippet:
la source
C#, 61 bytes
Full/Formatted Version:
la source
F#, 37 bytes
Try it online!
Takes input as a list of strings, and returns two lists, the first with elements where
fun a -> a="L"
is true and the other with elements that result in false.la source
Jelly, 10 bytes
Try it online!
In Jelly a string is a list of 1-char Python strings, e.g.
['a', 'b', 'c']
. That's why you get output such as[[['L'], ['L']], [['D'], ['D'], ['D']]]
, since 1-char Jelly strings behave the same.Doesn't work as a full program, hence the
ÇŒṘ
at the bottom.la source
string->char[]
automagically?W€€
part.Perse, 21 bytes
I may or may not have implemented the list partition function specifically for this challenge. Takes the input as an array of strings.
la source
Husk, 7 bytes
Try it online!
Explanation
la source
Java 8,
110106 bytes-4 bytes thanks to @Nevay.
Explanation:
Try it here.
la source
a->{String[]r={"",""};for(char c:a)r[c/69]+=c;return new char[][]{r[1].toCharArray(),r[0].toCharArray()};}
(-4 bytes)Octave, 21 bytes
Input is an array of characters, output is a cell array. Recycled from my answer here.
Sample execution on ideone.
la source
R, 35 bytes
Try it online!
Reads from stdin.
la source
Julia, 26 bytes
la source
Haskell (Lambdabot), 41 bytes
Try it online!
la source
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.la source
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:
la source
Perl 5, 70 bytes
Try it online!
la source