D'accord, hier était donc le 2ème jour de Noël et mes (grands) parents et moi avons fait une partie de "sjoelen", comme on l'appelle aux Pays-Bas. Le programmeur interne est venu en moi, mais juste au moment où j'ai eu la réponse, je l'ai perdue. Je veux que tu le refasses.
Les règles:
Vous avez une planche en bois, un sjoelbak , avec 4 boîtes, chacune avec son propre numéro. Lorsqu'un schijf (un objet ressemblant à une rondelle) entre dans l'une des cases, vous obtenez les points au-dessus de cette case.
Quand il y a un schijf dans les 4 cases, vous n'obtenez pas 10 mais vous obtenez 20 points.
Exemple:
De gauche à droite: 3 5 4 3
Chaque case a au moins 3 schijven (Pluriel de schijf ) soit 20 * 3 = 60 points.
Valeurs résultantes: 0 2 1 0
0 * 2 + 2 * 3 + 1 * 4 + 0 * 1 = 10 points.
Ce qui fait un total de 60 + 10 = 70 points.
L'entrée:
la quantité de schijven de gauche à droite, c'est-à-dire "4 5 4 5", [4,5,4,5], "4 \ n5 \ n4 \ n5", comme vous voulez.
La sortie:
Le nombre de points, soit 84, comme sortie, variable, retour ou au sommet de la pile, comme vous voulez.
Comme dans chaque golf de code, vous ne pouvez pas utiliser de scripts externes et le code avec le moins d'octets gagne.
PS: Comme vous l'avez peut-être déjà remarqué, je suis néerlandais. N'hésitez pas à modifier les éventuelles erreurs de grammaire.
la source
Réponses:
CJam,
23 2120 octetsJe pourrais peut-être jouer au golf à quelques octets.
L'entrée est comme
La sortie est le score
Comment ça marche
Algorithme
[1 2 3 4]
.1 + 2 + 3 + 4 = 10
, j'ajoute simplement le schijven commun minimum à chacun pour obtenir l'effet du10
score bonus .1
chacun, puis je multiplie le second avec2
et je l'ajoute au premier. Dans l'itération suivante, j'obtiens la somme actuelle et3
je marque schijven. Etc.Essayez-le en ligne ici
la source
Piet, 240 (30 * 8) codels, 138 contenant le code réel
Codel taille 10, pour une meilleure visibilité
Exemples de tests:
Affichage du débit:
Utiliser ma propre sténographie pour une manipulation plus facile et un affichage compact. Il montre le déroulement général du programme, pas les emplacements exacts des codels.
Explication complète:
Enregistrez l'image et essayez-la dans cet interprète Piet en ligne:
Interprète PietDev en ligne Piet
la source
APL (Dyalog Classic) ,
161312 octets-3 grâce à @ Adám
Essayez-le en ligne!
⌽+⌊/
inverse (arg) + min (arg)1⌽
tourner 1 vers la gauche+\
sommes partielles+/
sommela source
Mathematica,
38322320 octets(Avec l'aide de swish )
Utilisez en collant l'entrée jusqu'à la fin:
Alternatif (36 octets):
la source
Tr[(# + Min@#) {2, 3, 4, 1}] &
20*Min@#
, vous pouvez vous en débarrasser en remplaçant moins par plus, car commodément2+3+4+1==10
.R,
4140 caractèresUsage:
Dans le dernier exemple,
a
est vecteur3 5 4 3
,a-b
est0 2 1 0
, que nous multiplions par vecteur2 3 4 1
donnant ainsi0 6 4 0
que nous ajoutons par5*b
donner15 21 19 15
(5*b
étant recyclé pour chaque membre du vecteur ajouté, donc en ajoutant effectivement4*5*b
), que nous additionnons finalement, donnant ainsi70
.la source
b=min(a<-scan());sum(5*b+(a-b)*c(2:4,1))
JavaScript (ES6),
9347 octetsUsage:
s(1, 2, 3, 4)
Comment ça marche: la fonction recherche le plus petit nombre dans les arguments, et multiplie cela par
10
(pas avec20
) et ajoute le reste du score. Il n'est pas nécessaire de multiplier20
et de soustraire des parties de la partition pour continuer le calcul.Merci à edc65 pour partager les améliorations!
Non-golfé:
la source
S=(a,b,c,d)=>10*Math.min(a,b,c,d)+a*2+b*3+c*4+d
Pyth , 15
Les entrées doivent être séparées par une virgule sur STDIN, par exemple
Cela utilise la même astuce que de nombreuses autres solutions ont utilisé, d'ajouter le minimum à chaque élément pour tenir compte du bonus. Le minimum est
hSQ
dans le code ci-dessus. Pour tenir compte de la multiplication par 2, 3, 4 et 1, je mappe d sur la liste [0,1,2,3] et multiplie le (dl) e élément de l'entrée par d + 1. Ainsi, le -1ème élément est multiplié par 1, le zéro par 2, le premier par 3 et le second par 4. Alors je résume.la source
J,
2322 caractèresExemple:
Essayez ici.
(23 longue définition de fonction explicite:
v=:3 :'+/+/\.3|.y+<./y'
)la source
+/2 3 4 1*(+<./)
?2 3 4 1+/ .×]+<./
?Autruche v0.1.0 ,
4841 caractères (beaucoup trop long)C'est tout simplement la même chose que l'ancienne version ci-dessous, sauf qu'au lieu d'utiliser
@
pour faire pivoter la pile entière,)\+
(à droite) est utilisé à la place.Ancienne version:
J'ai en fait découvert deux bugs dans mon tout nouveau langage implémenté, annotés dans la description ci-dessous. (Le langage est actuellement très, très similaire à Golfscript, donc si vous connaissez Golfscript, il devrait être assez facile à lire.
Attend l'entrée en tant que tableau sur STDIN, car je suis une poignée de porte et j'ai oublié d'implémenter les E / S dans la version 0.1.0.
Résoudre un problème réel dans Ostrich est bien, car cela me montre exactement combien de choses supplémentaires je dois ajouter à la langue: D
la source
Python 2, 43 octets
Inspiré par la réponse de @ user2487951.
la source
Jagl Alpha 1.2 - 20 octets
L'entrée est au format stdin
(3 4 5 6)
, la sortie est laissée sur la pile:En attente d'une réponse de l'affiche originale sur le format de sortie. Puisque l'entrée est spécifiée comme "ce que vous voulez" , je vais supposer que mon entrée peut être un tableau en haut de la pile.Prend maintenant une entrée sur stdin.Explication:
la source
Haskell, 40
au lieu de supprimer le nombre minimum du reste et d'ajouter des
20
s supplémentaires , cela ajoute supplémentaire10
pour le nombre minimum.la source
..4*c+d..
Matlab, 27
Il m'a fallu un certain temps pour comprendre qu'il s'agissait d'un jeu solo. Avec l'aide de la fonction anonyme
qui est invoqué avec le vecteur ligne
la source
f=
pour 2 octets de moins. La fonction est stockée à laans
place dans la variable.[2:4,1]
va raser 2 octets si l'entrée est un vecteur colonne.Java, 84 octets
J'ai l'idée que cela peut être joué plus loin, mais c'est tout pour l'instant.
Appelez avec
A(new int[]{3,5,4,3})
, la sortie est retournée en tant qu'int (carSystem.out.println()
doublerait les octets)Ungolfed
la source
GolfScript, 22 octets
Lit l'entrée de stdin, au format
[3 5 4 3]
. Écrit la sortie dans stdout. (Si la prise de l'entrée en tant que tableau sur la pile est autorisée, l'interlignage~
peut être omis pour un total de 21 octets.)Cela utilise une stratégie quelque peu différente de celle des solutions CJam / Pyth / etc.: je construis d'abord un tableau avec 2 copies de la première valeur d'entrée, 3 de la seconde, 4 de la troisième et une de la quatrième. Ensuite, je trie ce tableau, je retire le plus petit élément, le multiplie par 11 et le additionne avec les autres éléments.
la source
Python 2, 51
Inspiré, mais court:
Plus pythonique:
la source
Julia,
4835 caractèresfunction p(m);sum([2 3 4 1].*m)+10minimum(m);end
sous forme compacte de cession:
Exemple:
la source
Javascript, 97 octets
la source
Javascript, ES6, 57
Je voulais voir comment la récursion se passerait, et bien que ce ne soit certainement pas la réponse la plus courte, j'avais l'impression que cela s'était bien passé.
a*b*c*d
: Il prend les valeurs d'entrée et trouve le produit de chacune d'entre elles, et l'évalue comme une expression booléenne pour une instruction if en ligne. Cela retournera false si une ou plusieurs des valeurs est 0, et vrai pour toute autre valeur.20+f(--a,--b,--c,--d)
: S'il renvoie vrai, la fonction renvoie 20 (pour l' ensemble schijven ) plus l'appel récursif de la fonction pour toutes les valeurs moins un (pour supprimer cet ensemble schijven ). De cette façon, il bouclera récursivement jusqu'à ce qu'au moins une des cases soit vide.a*2+b*3+c*4+d
Après au moins une case vide, la partie else de l'instruction inline if s'exécutera. Il renvoie simplement les points pour le schijven restant dans les cases.Ainsi, à la fin, tous les ensembles de 20 points de Schijven , et les points de renvoi sont résumés et renvoyés par la fonction, produisant la réponse.
la source
Haskell 42 caractères
la source
f l@[a,b,c,d]=10*minimum l+2*a+3*b+4*c+d
HPPPL (HP Prime Programming Language),
5857 octetsLe * entre 10 et min n'est pas nécessaire, je l'ai donc supprimé.
HPPPL est le langage de programmation pour la calculatrice graphique couleur HP Prime / CAS.
Exemple fonctionne:
S'il ne doit pas nécessairement s'agir d'un programme, il est réalisable dans un
4039 octets à une ligne:la source
Staq, 72 caractères
Exemple d'exécution:
Staq a deux piles, une active et une passive. La
|
commande bascule la pile active sur passive et vice versa.Tout entre les accolades définit une fonction, la première lettre après l'accolade ouvrante est le nom de la fonction, le reste jusqu'à l'accolade fermante est la fonction elle-même. Les fonctions écrasantes, récursives et imbriquées sont possibles.
{aii}
définirait une fonction a qui incrémenterait le haut de la pile deux fois. Chaque instance suivante dea
dans le code sera remplacée parii
.Commentaires à l'intérieur des prorams Staq:
&
ajoute un zéro en haut de la pile,[
demande au pointeur de passer au correspondant]
si le haut de la pile est nul,x
supprime la valeur la plus élevée de la pile. Ainsi, les commentaires peuvent être écrits dans le code sous la forme de&[here is a comment]x
Explication (également exécutable):
https://esolangs.org/wiki/Staq
Le programme utilise une pile (initialement active) pour calculer 2a + 3b + 4c + d, et la deuxième pile (initialement passive) pour calculer 10 fois le minimum des valeurs d'entrée. Les deux résultats sont ensuite résumés et affichés.
la source
PowerShell pour Windows ,
4847 octets-1 octet grâce à mazzy
Essayez-le en ligne!
la source
Powershell for Windows
quand on utilise l'sort
alias? voir meta