Étant donné une liste / un tableau non vide contenant uniquement des entiers non négatifs comme celui-ci:
[0, 0, 0, 8, 1, 4, 3, 5, 6, 4, 1, 2, 0, 0, 0, 0]
Sortez la liste avec les zéros de fin et de tête supprimés.
La sortie pour cela serait:
[8, 1, 4, 3, 5, 6, 4, 1, 2]
Quelques autres cas de test:
[0, 4, 1, 2, 0, 1, 2, 4, 0] > [4, 1, 2, 0, 1, 2, 4]
[0, 0, 0, 0, 0, 0] > nothing
[3, 4, 5, 0, 0] > [3, 4, 5]
[6] > [6]
Victoires de code les plus courtes
code-golf
array-manipulation
Lamaro
la source
la source
Nil
()
/[]
slip()
/Empty
Any
{}
certaines d'entre elles sont indéfinies, certaines définies mais singulières, certaines qui se glissent dans d'autres listes de sorte qu'elles n'augmentent pas le nombre d'éléments. (Il y a autant de variations différentesAny
qu'il y a de classes / types et de rôles)"0,4,1,2,0,1,2,4,0" => "4,1,2,0,1,2,4"
EDIT: Je viens de remarquer que de nombreuses langues le font déjà.Réponses:
Gelée , 2 octets
Code:
Explication:
Essayez-le en ligne!
la source
JavaScript (ES6) 43
Moins golfé
Tester
la source
f=(a,r=f(a,a))=>r.reverse().filter(x=>a|=x)
est également de 43 octets.CJam, 13 octets
Avec le tableau entré.
Version plus longue:
la source
Pyth, 4 octets
Démo:
De Pyth's
rev-doc.txt
:la source
05AB1E , 4 octets
Code:
Essayez-le en ligne!
Explication:
Utilise l'encodage CP-1252.
la source
Rétine, 12 octets
Le saut de ligne arrière est important.
Merci à @Martin Büttner et @FryAmTheEggman pour avoir économisé quelques octets.
Essayez-le en ligne
la source
R, 43 octets
ou en lecture / écriture STDIN / STDOUT
Ceci trouve le maximum cumulatif à partir de la chaîne de début et de fin (inversée). L'
&
opérateur convertit ces deux vecteurs en un logique de la même taille quex
, (les zéros seront toujours convertis enFALSE
et tout le reste enTRUE
), de cette façon, il permet de sous-ensemble enx
fonction des conditions remplies.la source
Haskell , 29 octets
la source
Mathematica
3427 octetsCela applique à plusieurs reprises des règles de remplacement jusqu'à ce qu'une telle action ne fournisse pas de nouvelle sortie. 7 octets économisés grâce à Alephalpha.
La première règle supprime un zéro au début; la deuxième règle supprime un zéro à la fin du tableau.
la source
#//.{0,a___}|{a___,0}:>{a}&
05AB1E, 4 octets
Coupe essentiellement les zéros de début puis de fin de l'entrée, donnés sous forme de tableau.
Essayez-le en ligne!
la source
Perl, 19 + 1 = 20 octets
-p
Drapeau requis :la source
s/^0 | 0$//&&redo
?
comme dans l'exemple - mais cela ne réduira pas"0"
..Gelée, 10 octets
Cela n'utilise pas la fonction intégrée.
Essayez-le ici .
la source
Perl, 38 octets
Exécutez avec
perl -p
, (3 octets ajoutés pour-p
).Accepte les numéros sur STDIN, un par ligne; émet des numéros sur STDOUT, un par ligne, comme le devrait un utilitaire Unix bien comporté.
Ne traite que les nombres représentés exactement par «0» comme des zéros; il serait possible de prendre en charge d'autres représentations avec quelques octets supplémentaires dans l'expression régulière.
Version plus longue, toujours à exécuter avec
-p
:Version étendue, montrant les interactions avec l'indicateur -p:
la source
perl -E
, le-p
drapeau n'est généralement compté que pour un octet, car il n'y a qu'un seul octet supplémentaire différent entre cela etperl -pE
.Elixir, 77 octets
l est le tableau.
Edit: wah! copie / pâtes échouent. bien sûr, il faut importer Enum, ce qui augmente le nombre d'octets de 12 (ou utiliser Enum.function_name, ce qui le rendra encore plus long).
la source
Vitsy, 13 octets
Vitsy s'améliore lentement ... (Je viens pour toi Jelly. ಠ_ಠ)
Cela se termine avec le tableau sur la pile. Pour plus de lisibilité, TryItOnline! le lien que j'ai fourni ci-dessous l'explication produira une liste formatée.
Explication:
Notez que cela lèvera une StackOverflowException pour des entrées déraisonnablement grandes.
TryItOnline!
la source
R, 39 octets
Quatre octets de moins que la réponse R de David Arenburg . Cette implémentation trouve le premier et le dernier index dans le tableau qui est supérieur à zéro et renvoie tout dans le tableau entre ces deux indices.
la source
MATL , 9 octets
Essayez-le en ligne!
Explication
la source
Dyalog APL, 15 octets
Essayez-le ici .
la source
{⌽⍵/⍨×+\⍵}⍣2
?Rubis,
4944 octetsMerci à manatwork pour couper 5 octets avec une méthode complètement différente!
C'est juste
drop
le premier élément du tableau,while
c'est 0, inverse le tableau, se répète et, enfin, inverse le tableau pour le remettre dans le bon ordre.la source
.drop_while()
solution basée serait plus courte (si vous utilisez 2 fonctions):f=->a{a.drop_while{|i|i<1}.reverse};->a{f[f[a]]}
eval
laideur:->a{eval ?a+'.drop_while{|i|i<1}.reverse'*2}
.<1
toute façon. Merci!Vim 16 frappes
L'entrée doit être tapée par l'utilisateur entre
i
etesc
, et ne compte pas comme une frappe. Cela suppose qu'il y aura au moins un zéro de début et un zéro de fin. Si ce n'est pas une hypothèse valide, nous pouvons utiliser cette version légèrement plus longue: (18 frappes)la source
i
et<esc>
). Dans vim golf, le golfeur commence avec l'entrée déjà dans un fichier chargé le tampon et le curseur dans le coin supérieur gauche, mais l'utilisateur doit également enregistrer et quitter (ZZ
c'est généralement le moyen le plus rapide). Ensuite, vous pourriez faire quelque chose commed[1-9]<enter>$NlDZZ
(13 frappes). NoteN
/n
au lieu de/<up><enter>
ES6, 51 octets
t
est défini sur l'index après la dernière valeur non nulle, tandis qu'ilf
est incrémenté tant que seuls des zéros ont été vus jusqu'à présent.la source
Perl 6 , 23 octets
Usage:
la source
Rétine, 11 octets
Assez facile. Remplace récursivement les zéros au début et à la fin de la ligne.
Essayez-le en ligne!
la source
JavaScript (ES6), 47 octets
Où
a
est le tableau.la source
a=>a.join(a="")...
.[14]
reviendra[1, 4]
.Python, 84 caractères
la source
for i in-1,0:
JavaScript (ES6), 34 octets
L'entrée et la sortie se présentent sous la forme d'une liste délimitée par des espaces, telle que
"0 4 1 2 0 1 2 4 0"
.la source
Javascript (ES6) 40 octets
la source
PHP,
565452 octetsUtilise l'encodage Windows-1252
Solution basée sur les chaînes
Courez comme ceci:
Si votre terminal est réglé sur UTF-8, c'est la même chose:
Tweaks
la source
Python 2,
6967 octetsla source
for i in-1,0:
[space][space]while
par[tab]while
. Et==0
peut l'être<1
. mothereff.in/…PowerShell, 49 octets
Prend l'entrée
$args[0]
et les-join
s avec des virgules pour former une chaîne. Nous utilisons ensuite la.Trim()
fonction appelée deux fois pour supprimer d'abord les derniers zéros et les virgules. Nous avons ensuite-split
la chaîne de virgules dans un tableau.Version alternative, sans utiliser PowerShell de conversion
, 81 octets
Étant donné que PowerShell n'a pas de fonction pour couper les tableaux, nous définissons une nouvelle fonction
f
qui fera la moitié de cela pour nous. La fonction prend$a
en entrée, puis parcourt chaque élément avec une boucle foreach|%{...}
. A chaque itération, nous vérifions un conditionnel pour$_ -or $b
. Étant donné que les entiers non nuls sont véridiques, mais$null
est falsey (et$b
, comme ils n'ont pas été définis précédemment, commencent comme$null
), cela n'évaluera qu'une$true
fois que nous aurons atteint notre premier élément non nul dans le tableau. Nous avons ensuite défini$b=1
et ajouté la valeur actuelle$_
sur le pipeline. Cela continuera ensuite jusqu'à la fin du tableau d'entrée, avec des zéros au milieu et la fin étant ajoutés à la sortie, puisque nous avons défini la$b
vérité.Nous encapsulons et stockons tous les résultats de la boucle dans
$a
. Ensuite, nous indexons$a
dans l'ordre inverse (c'est-à-dire, en inversant le tableau), qui est laissé sur le pipeline et est donc la valeur de retour de la fonction.Nous appelons la fonction deux fois sur l'
$args[0]
entrée du programme afin de "rogner" de l'avant, puis de nouveau de l'avant (qui est l'arrière, puisque nous avons inversé). L'ordre est conservé puisque nous inversons deux fois.Cette version joue un peu avec les règles pour un tableau d'entrée de tous les zéros, mais comme ignorer STDERR est une pratique acceptée, le programme crachera deux
Cannot index into a null array
erreurs (verbeuses) dans (l'équivalent de PowerShell) STDERR, puis ne produira rien.la source