introduction
Je suis tombé sur ce modèle (inutile) l'autre jour alors que je regardais la télévision. Je l'ai appelé "le motif 9" parce que le premier nombre à l'utiliser était 9. L'essentiel est que vous entrez un nombre (disons x ), puis vous revenez:
- X
- x + ( x / 3) [appelons cela y ]
- les deux tiers de y [appelons cela z ]
- z + 1
Donc, si je mets à l'intérieur de ce motif le nombre 9 en tant que x , voici ce qui sortirait:
- 9 ( 9 )
- 12 ( 9 + 9/3 ) [9 sur 3 est 3 et 9 + 3 est 12]
- 8 ( 12 fois les deux tiers) [un tiers de 12 est 4 et 4 * 2 est 8]
- 9 ( 8 + 1 est 9)
Défi
Écrivez-moi une fonction (dans n'importe quel langage de programmation) qui prend un nombre et génère un tableau entier en utilisant le modèle.
Un peu comme ce pseudo-code:
function ninePattern(int myInt) returns IntegerArray {
int iterationA = myInt + (myInt / 3);
int iterationB = iterationA * (2 / 3);
int iterationC = iterationB + 1;
IntegerArray x = [myInt, iterationA, iterationB, iterationC];
return x;
}
Clarifications
Les discussions ont suscité des commentaires concernant les spécifications de la question. Cette section vise à clarifier certains d'entre eux.
"mieux vaut compter en octets que en caractères"
J'ai choisi des personnages parce que (pour moi, au moins), il serait plus facile de juger. Bien sûr, je ne peux pas changer ça maintenant. (de nombreuses réponses sont déjà publiées)
"arrondi"
L'arrondi suit cette rime:
Si c'est 5 ou plus, augmentez le score
Si c'est 4 ou moins, laissez reposer
Autrement dit, si c'est quelque chose comme 4,7 ou 3,85, arrondissez-les respectivement à 5 et 4.
Exemples
Input => Result
9 => [9, 12, 8, 9]
8 => [8, 11, 7, 8]
6 => [6, 8, 5, 6]
23 => [23, 31, 21, 22]
159 => [159, 212, 141, 142]
Si, cependant, les nombres sont quelque chose comme 2,3 ou 10,435446, arrondissez-les respectivement à 2 et 10.
"support linguistique"
Vous êtes libre de ne pas utiliser les fonctions et / ou les tableaux SI ET UNIQUEMENT SI la langue de votre choix ne les prend pas en charge. Si c'est le cas (même si cela augmentera le nombre de vos personnages), vous devez les utiliser .
la source
Réponses:
MarioLANG,
659621591582556543516458418401352308369 octetsl'arrondi est assez cher: /
Essayez-le en ligne
Eh bien, c'était plus amusant que prévu, ce n'est probablement pas optimal mais je suppose que j'y arrive.
Temps d'explication:
(pour la version 352 octets)
nous obtenons d'abord l'argument et l'imprimons:
assez simple
on passe ensuite à l'essentiel du programme: la division input / 3
qui est une conversion légèrement modifiée de la division brainfuck
qui prennent pour entrée
et te rendre
une fois que nous avons obtenu la division, nous l'utilisons pour obtenir la somme de n et n / d et l'imprimer
nous devons ensuite faire une autre division: (2 * (n + n / d)) / 3
nous obtenons donc (2 * (n + n / d)
et le remettre avec 3 dans la division
à ce moment-là, tout explose, mario est coincé dans une boucle infinie faisant la division sur un nombre de plus en plus grand, pour toujours.
et pour corriger cela, nous avons besoin d'un moyen de faire la différence entre la première et la deuxième division, il en résulte que, oh joie, nous avons un moyen
fondamentalement, nous regardons si le x
est 0, si cela signifie que nous sommes sur la première division
sinon nous sommes sur la deuxième division, et nous imprimons simplement le résultat de la division, ajoutons 1, puis imprimons-le à nouveau
et voilà facile comme tarte.
la source
Emotinomicon 99 octets, 33 caractères
Explication:
la source
MATL, 14 octets
Essayez-le en ligne
Assez simple,
v
concatène la pile dans un tableau.Xo
convertit en un type de données entier, et toutes les opérations par la suite sont des opérations entières.la source
Cheddar , 27 octets
$0
est variable avec entrée. Cheddar n'est tout simplement pas un langage golfique ¯ \ _ (ツ) _ / ¯, ce n'est pas non plus concurrentiel car la fonctionnalité d'entrée de Cheddar a été créée après ce défi.Non golfé:
la source
Java,
86828485 caractèresLa lettre
d
placée juste après un entier fait l'entier adouble
.Non golfé:
Sans la classe (
class c{}
8 caractères), elle passe à 76 caractères:Version plus précise en 110 caractères (118 avec l'énumération) - il utilise
float
s car personne n'a de place pour le castingMath#round(double)
:la source
I + (I / 3)
utilisation d'une division entière, ce qui signifie que les fractions sont rejetées et que le résultat n'est donc pas arrondi correctement.Java,
5680 octetsComme certains utilisateurs l'ont souligné, cette solution (comme certaines autres en java) n'arrondit pas correctement les données. Alors maintenant, je présente une solution légèrement plus longue qui devrait retourner un résultat correct
ou version lamda 60 octets
Version golféeet non golfé
ou 36 octets définis comme lambda
la source
Java, 64 octets
Remarques
Non golfé
Sortie avec i = 9
la source
Scratch, 33 octets
Demande l'entrée, les ensembles
a
à entrer arrondis, les ensemblesb
etc
leurs modifications respectives, puis dit les quatre nombres, séparés par des virgules.la source
Java 8 lambda,
109817975 caractèresParce que ... vous savez ... même Java peut être joué au golf ...
Lambda non golfée en classe:
Je suppose que je suis autorisé à utiliser les longs car ils sont également de type entier. Malheureusement, il faut arrondir correctement les entiers et donc une distribution "courte" ne fonctionne pas. En utilisant des longs, nous n'avons pas besoin de remettre les résultats d'arrondi en pouces.Mise à jour
En utilisant le joli petit + 0,5 et le casting après, nous gardons l'arrondi correct et économisons 2 caractères!
De plus, cette astuce ne nécessite plus l'utilisation de long, nous pouvons donc revenir au rasage de 4 caractères supplémentaires.
la source
a->{
et le final}
pour -5 octets.Mathematica - 21 octets
Je viens de recevoir Mathematica de mes frères RPi, alors essayez-le pour le plaisir, et quoi de mieux qu'un défi PPCG.
Définit une fonction anonyme. Essayez-le comme:
la source
Python 3, 45 octets
Voir ce code en cours d'exécution sur ideone.com
la source
Lua, 52 octets
Ce programme prend un nombre par argument de ligne de commande et retourne le tableau correspondant. Les programmes dans lua sont techniquement des fonctions, car l'interpréteur les encapsulera toujours dans une fonction. C'est également ce mécanisme qui est utilisé lorsque vous "appelez" des codes dans d'autres fichiers (il utilise essentiellement
loadfile
/dofile
).la source
En fait, 21 octets
Ce programme déclare une fonction qui effectue les opérations requises sur la valeur de pile supérieure.
Essayez-le en ligne! (le supplément
.
à la fin évalue la fonction et imprime le résultat)Explication:
la source
Mathcad, [tbd] octets
L'équivalence d'octets Mathcad codegolf reste à déterminer. En considérant un clavier comme un équivalent approximatif, la solution est d'environ 40 octets.
la source
05AB1E , 15 octets
Code:
Utilise l' encodage CP-1252 . Essayez-le en ligne! .
la source
Pyke, 11 octets
Essayez-le ici!
la source
Javascript, 50 octets
Je convertis ma solution java en JavaScript et je l'ai survolé un peu.
la source
C ++ 0x -
95102185 185189109129 caractèresDégolfé
la source
p+(p/3)*(2/3)
ce qui estp+(2*p/9)
au lieu de(p+(p/3))*(2/3)
Erlang, 80 octets
Pour exécuter, enregistrez sous f.erl , compilez et appelez la fonction. Il renverra une liste d'entiers:
Notez que Erlang automatiquement convertis int s de caractères ASCII si vous êtes dans la plage de valeurs ASCII car Erlang ne dispose pas d' un omble chevalier de type. Appeler la fonction avec 100 vous donne la meilleure lisibilité [100,133,88,89] .
Non golfé:
la source
Erlang, 46 octets
Réponse inspirée de @ fxk8y (je n'ai pas pu poster de commentaire sur sa réponse)
Vous pouvez également voir les résultats avec:
la source
Pyth, 20 octets
Explication:
Testez ici
la source
Jolf, 17 octets
Définit une fonction
Ώ
. Il prend implicitement une entrée, il fait donc également office de programme complet. Essayez-le ici!la source
Mathematica, 51 octets
Fonction anonyme conforme à la version actuelle (au moment de la publication) de la publication, ce qui implique un arrondi à chaque étape.
FoldList
est une opération typique de programmation. Elle est invoquée en tant queFoldList[f, list]
et applique la fonction à deux arguments àf
plusieurs reprises au résultat (ou au premier élément de la liste dans la première itération), en prenant l'élément suivant de la liste comme deuxième argument.Ungolfed:
#2 @ # &
est une fonction anonyme qui applique son deuxième argument au premier. Par conséquent, l'argument de liste de seFoldList
compose des fonctions successives à appliquer à l'entrée.Parce que l'entrée est un entier et que les divisions sont par 3, il n'y aura jamais de résultat comme 4,5, donc il n'y a pas besoin de se soucier des règles d'arrondi lorsque le dernier chiffre est un
5
: il sera toujours clairement plus proche d'un entier ou d'un autre.la source
Dyalog APL , 33 octets
la source
Desmos, 37 octets
Essayez-le en ligne
Yay pour les langues non conventionnelles!
la source
CJam, 21 octets
Vos commentaires sont les bienvenus
Explication
qi__
- Lisez l'entrée sous forme d'entier et dupliquez-la deux fois3D/+mo
- Divisez une instance de l'entrée par 3, puis ajoutez-la à la deuxième instance pour faire y_2d3/*i
- Dupliquez y, puis multipliez-le par 0,6Edit: J'ai oublié de faire les trois premiers un double, donc le programme a été interrompu. Fixé.
la source
Axiome, 59 octets
tester
la source
PHP, 60 octets
Essayez-le en ligne!
la source
PHP, 67 octets
la source