Dans les échappatoires standard , il est interdit de :
Affirmer que votre réponse est écrite dans "MyOwnLanguage", où la commande
x
signifie "lisez une séquence de nombres, divisez-les en groupes de trois et affichez les derniers numéros des groupes dont le deuxième nombre est inférieur au premier"
Ici, nous allons faire exactement la même chose.
Tâche
Étant donné une séquence d'entiers positifs, dont la longueur est divisible par 3, divisez-les en groupes de trois et affichez les derniers chiffres de ces groupes dont le second est inférieur au premier.
Testcases
Input Output
[] []
[1,2,3,4,5,6,7,8,9] []
[2,1,3,5,4,6,8,7,9] [3,6,9]
[3,1,4,1,5,9,2,6,5] [4]
[100,99,123] [123]
[123,123,456] []
[456,123,789] [789]
Notation
C'est du code-golf . La réponse la plus courte en octets l'emporte.
Les failles standard s'appliquent, alors n'oubliez pas de ne pas avoir de commande intégrée x
qui effectue cette tâche.
code-golf
arithmetic
array-manipulation
Fuite, nonne
la source
la source
MyOwnLanguage
et d'ajouter lax
commande ...: Px
effectuant spécifiquement cette fonction.p
, puis-je l'utiliser?Réponses:
Octave, 32 octets
Essayez-le en ligne!
ou
Vérifiez les cas de test!
la source
Gelée ,
9 à8 octetsEssayez-le en ligne!
Comment ça fonctionne
la source
Haskell,
3029 octetsMa première tentative de golf Haskell, alors j'ai peut-être manqué une optimisation ou deux
-1 octet grâce à @JulianWolf
la source
x d=d
peut vous faire économiser un octetMathematica, 37 octets
En supposant que cela satisfasse à la spécification, ngenisis se voit attribuer le mérite de cette approche permettant une économie de 1 octet!
Fonction pure.
BlockMap[...,#,3]&
divise la liste d'entrées en sous-listes de longueur 3, puis agit sur chaque sous-liste avec la fonctionIf[#>#2,Print@#3]&@@#&
. Le résultat est que chaque dernier numéro éligible est imprimé. La fonction renvoie également une valeur (à savoir une liste deNull
sa troisième tant que la liste d'entrée), qui semble être le comportement autorisé.Mathematica,
4238 octetsMerci à Martin Ender pour avoir économisé 4 octets!
Fonction pure.
#~Partition~3
fait ce que vous pensez.Cases[X,P:>Q]
sélectionne tous les élémentsX
correspondant au modèleP
et renvoie le résultat de la règle de transformation:>Q
appliquée à chaque instance. Ici, le modèle mis en correspondance est{a__,b_}/;a>0
:b_
correspondra au dernier élément de la liste et àa__
tous les autres éléments (dans ce cas, les deux premiers); appelez-lesy
etz
pour l'instant. Le sournoisa>0
se développe ensuitey>z>0
, ce qui correspond au test que nous souhaitons appliquer (valide car la spécification indique que tout sera un entier positif). Et la règle de transformation est:>b
, qui remplace simplement chaque triplet ordonné correspondant par son dernier élément.Soumission originale:
Fonction pure; En gros, une implémentation simple, autre que celle
#.{1,-1,0}
qui calcule la différence entre le premier et le deuxième élément de chaque sous-liste à 3 éléments.la source
#>#2&@@#&
est plus court. Mais globalement, il reste encore plus court à utiliserCases
au lieu deSelect
:Cases[#~Partition~3,{a__,b_}/;a>0:>b]&
a>0:>
contient deux sortes de magie!BlockMap
est tentant ici.BlockMap[If[#>#2,#3,Nothing]&@@#&,#,3]&
fonctionne et n’est que de 39 octets ... pouvons-nous économiser quelques octets?BlockMap[If[#>#2,Print@#3]&@@#&,#,3]&
satisfait sans doute le specPyth, 10 octets
Suite de tests
la source
R, 35 octets
la source
Brachylog (2), 14 octets
Essayez-le en ligne!
Brachylog se bat plutôt avec ce genre de problème. Notez que ce programme a une complexité de calcul horrible, car il force la division des données en groupes de 3 (sans avoir de "division en groupes" intégrée); il fonctionne rapidement avec quatre groupes mais très lentement avec cinq.
Explication
la source
l÷₃;?ḍ₍
s’agit d’une alternative plus rapide./
non÷
; ils sont équivalents ici), mais c'est un octet plus long, donc je l'ai jeté en le jouant au golf.J , 14 octets
Cela donne un verbe monadique. Essayez-le en ligne!
Explication
la source
Alice ,
12 à11 octetsMerci à Leo d’avoir économisé 1 octet.
Essayez-le en ligne!
Utilise les points de code d'une chaîne en tant que liste d'entrées et affiche le caractère correspondant aux sorties à conserver.
Explication
la source
r
au lieu deex
. TIO05AB1E , 8 octets
Code:
Utilise le codage 05AB1E . Essayez-le en ligne!
la source
dc , 30 octets
I / O: un numéro par ligne.
la source
Perl 5 , 31 octets
30 octets de code +
-p
drapeau.Essayez-le en ligne!
Remplace chaque groupe de 3 nombres (
\d+ (\d+) (\d+)
) par le troisième ($2
) si le second ($1
) est inférieur au premier ($&
) et rien sinon.la source
CJam , 15 octets
Bloc anonyme qui attend un argument sur la pile et laisse le résultat sur la pile.
Essayez-le en ligne! (Exécute tous les cas de test)
Explication
la source
Brain-Flak , 82 octets
Essayez-le en ligne!
la source
Gelée , 10 octets
Essayez-le en ligne!
ou
Vérifier les cas de test
-3 octets grâce à @LeakyNun
Explication
la source
s3µṪ×>/µ€ḟ0
s3µṪWx>/µ€
R, 37 octets
Version avec
scan()
laquelle je n'aime pas, mais ça raccourcit.Version avec
function()
qui est plus facile à tester (41 octets)Merci à la @ Giuseppe! Belle idée d'utiliser le recyclage de l'index.
Tester:
Sortie:
la source
x
à partir de stdin en utilisantx=scan()
au début au lieu de définir une fonction, vous pouvez aussi simplement définiri=c(1,2,0)
depuis que les indices logiques sont recyclés, c'est-à-direx=scan();i=c(1,2,0);x[!i][x[i>1]<x[i==1]]
x=scan()
approche car elle alourdit les informations fournies. Et je ne peux pas le rendre répétable alors.matrix()
mais de toute façon, je ne pensais pas qu'il serait possible de faire aussi court.JavaScript (ES6),
4644424139 octetsL'essayer
Entrez une liste de nombres séparés par des virgules, sans espaces.
Explication
la source
y%3>1&a[y-1]<a[y-2]
marche?Coque , 8 octets
Essayez-le en ligne!
Explication
Ce programme est un peu compliqué, alors supportez-moi.
La fonction
ΓȯΓ↑<
prend une liste de longueur 3,x = [a,b,c]
. Le premierΓ
se divisex
ena
et[b,c]
, et les alimente comme arguments de la fonctionȯΓ↑<
. Cela devrait être équivalent à((Γ↑)<)
, mais à cause d'un bug / d'une fonctionnalité de l'interpréteur, c'est en fait équivalent à(Γ(↑<))
, interprété comme une composition deΓ
et↑<
. Maintenant,a
est appliqué à la dernière fonction en utilisant une application partielle, la fonction résultante↑<a
est donnée àΓ
, qui décompose[b,c]
enb
et[c]
. Puisb
est alimenté à↑<a
, résultant en une fonction qui prend les premiersb<a
éléments d'une liste. Cette fonction est finalement appliquée à[c]
; le résultat est[c]
sia>b
, et[]
autrement. Ces listes sont concaténées parṁ
pour former le résultat final, qui est imprimé implicitement.Sans la "fonctionnalité", j'aurais 9 octets:
la source
Python 3 ,
4342 octets1 octet grâce à xnor.
Essayez-le en ligne!
la source
MATL , 10 octets
Le résultat est affiché sous forme de nombres séparés par des espaces.
Essayez-le en ligne!
Ou vérifiez tous les cas de test . Ceci affiche une représentation sous forme de chaîne de la sortie, de sorte qu'un tableau vide est réellement vu comme
[]
. Notez que dans MATL, un nombre est identique à un tableau singleton, il[4]
est donc affiché sous la forme4
.Explication
la source
Röda , 15 octets
Röda est presque aussi court que les langues de golf ...
Cela prend trois valeurs dans le flux et
_3
renvoie la troisième ( ) si la seconde (_2
) est inférieure à la première (_1
).Les caractères de soulignement sont un sucre de syntaxe pour les
for
boucles, de sorte que le programme puisse être écrit sous la forme{{[a]if[b<c]}for a,b,c}
ou même{[a]for a,b,c if[b<c]}
.Pas de lien TIO, car cela ne fonctionne pas sur TIO pour une raison quelconque (bien que cela fonctionne avec la dernière version de Röda antérieure au défi).
la source
Java 7,
8685 octets-1 octet grâce à @ PunPun1000
Explication:
Essayez ici.
la source
3,9
pour le scénario de test1,2,3,4,5,6,7,8,9
au lieu de3,6,9
).C #, 126 octets
Si vous voulez tout un programme avec la méthode, ce serait 175 octets :
Enregistré 7 octets avec l'aide de TheLethalCoder
la source
(int[]i)
peut simplementi
ne pas avoir besoin du type.(i)
non plus.Python 2 , 57 octets
Essayez-le en ligne!
la source
CJam , 16 octets
La sortie est affichée sous forme de nombres séparés par des espaces.
Essayez-le en ligne!
Explication
la source
PHP, 89 octets
Essayez-le en ligne!
la source
JavaScript,
108107108 octetsCeci est une fonction JS anonymous (lambda) valide. Ajouter
x=
au début et invoquer commex([5,4,9,10,5,13])
. Sorties en fonctionreturn
.L'extrait prend l'entrée en tant que liste d'entiers séparés par des virgules.
la source
martin
et endennis
tant qu’identifiant?[5,4,9,10,5,13]
.,
abouti à un tableau de chaînes plutôt que de nombres! La solution est parfaitement correcte. Seul l'extrait de cas de test était faux. J'ai corrigé cela, maintenant. Merci d'avoir fait remarquer cela! :)Perl5.8.9,
7360 octets(58 + 2 pour le drapeau 'n' pour lire le fichier entier et un pour autosplit). Suppose que l'entrée est des lignes de nombres séparés par des espaces
Réduction grâce à Dada. Y compris l'impression à la fin pour la visibilité, cela économiserait 8 octets sinon.
la source
print"\n"
à la fin. En outre, vous pouvez$b[1]<$b[0]&&print"$b[2] "while@b=splice@a,0,3
sauvegarder 7 octets. Enfin, vous pouvez utiliser-a
flag au lieu de faire@a=split
(il fera automatiquement la même chose et enregistrera le résultat au@F
lieu de@a
); avec Perl 5.8.9, vous aurez besoin de-na
tout avec les dernières Perls,-a
c’est suffisant. Cela devrait vous amener à 47-48 octets.Clojure, 43 octets
Ennuyeuse :/
la source
Bash , 61 octets
Essayez-le en ligne!
la source