Intro:
Je me souviens, quand j'étais enfant, je recevais une calculatrice et je continuais d'appuyer sur le +
bouton, et je voyais à quel point je pouvais compter. Maintenant, j'aime programmer et je développe pour iOS.
Le comptage est une compétence fondamentale pour les humains et les ordinateurs. Sans cela, le reste des mathématiques ne peut pas être fait. Cela se fait simplement en commençant par 1
et en l'ajoutant de manière répétitive 1
.
Le défi:
Ce n'est qu'un simple défi. Ce que j'aimerais que votre programme fasse, c'est d'imprimer à partir 1
de ce Integer
qu'il contient. Cependant, je vais y apporter une touche, car le décimal est un peu ennuyeux:
Le comptage ne peut pas être en base 10, il doit se montrer comptant en binaire.
Donc, pour compter jusqu'à 5, en utilisant des entiers 32 bits, cela ressemblerait à ceci:
0000 0000 0000 0000 0000 0000 0000 0001 ..... 1
0000 0000 0000 0000 0000 0000 0000 0010 ..... 2
0000 0000 0000 0000 0000 0000 0000 0011 ..... 3
0000 0000 0000 0000 0000 0000 0000 0100 ..... 4
0000 0000 0000 0000 0000 0000 0000 0101 ..... 5
C'est un ordinateur. Ils connaissent le mieux le binaire. Votre entrée peut être un entier 32 bits ou 64 bits. Cela dépend vraiment de vous. Cependant, si vous utilisez des entiers 32 bits, votre sortie doit être des entiers 32 bits en binaire et si vous utilisez des entiers 64 bits, votre sortie doit être des entiers 64 bits en binaire .
Exemple d'entrée:
un entier 32 bits, 5
Exemple de sortie:
0000 0000 0000 0000 0000 0000 0000 0001
0000 0000 0000 0000 0000 0000 0000 0010
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0100
0000 0000 0000 0000 0000 0000 0000 0101
Notation:
Votre score est égal au nombre d'octets de votre code. Comme il s'agit de Code Golf, le score le plus bas l'emporte.
Points bonus:
Si vous montrez, dans la sortie, le nombre auquel il correspond en tant que nombre de base 10 (par exemple, 0000 0000 0000 0000 0000 0000 0000 0001
en binaire est égal à la base 10 1
), multipliez votre score par 0.8
.
Si vous regroupez 4 chiffres de sortie comme je l'ai fait, multipliez votre score par 0.8
(à nouveau). Ce n'est pas obligatoire.
Ne pas arrondir et ne pas arrondir. Votre score est un nombre à virgule flottante.
int
par exemple)?Réponses:
APL, 10 caractères
Un autre dans APL. Suppose
⎕IO←1
(par défaut). Pas de points bonus. Lit le numéro du périphérique d'entrée. Si votre APL utilise des entiers 64 bits au lieu de 32 bits, remplacez 64 par 32 si nécessaire.Notez que APL convertit de manière transparente en nombres à virgule flottante lorsque la plage d'un entier est dépassée. Il est donc difficile de dire exactement avec quelle taille entière APL fonctionne.
explication
la source
JavaScript ( ES6 ) 56,8 (71 * 0,8)
Version 32 bits, car JavaScript ne peut pas gérer la précision 64 bits (au plus 53 bits en utilisant des doubles à virgule flottante)
Sans regroupement
Avec groupement - score 60,16 (94 * 0,64)
Testez dans n'importe quel navigateur (ES5)
la source
Pyth, 18 * 0,8 * 0,8 = 11,52 octets
Exemple de sortie:
la source
Pyth, 19 * 0,8 * 0,8 = 12,16 octets
Exemple de sortie pour l'entrée 5:
Manifestation.
la source
Python 2, 48 * 0,8 = 38,4
Convertit un nombre en binaire, utilise un formatage de chaîne pour le convertir en binaire avec 32 chiffres, puis imprime également le nombre décimal pour le bonus. Utilise une
exec
boucle pour incrémenter de1
à la valeur d'entrée.la source
OverflowError: repeated string is too long
. Je ne sais pas si c'est une limite pour ma machine.CJam, 13,44 (21 × 0,64)
Essayez-le en ligne.
la source
APL, 23,68 (37 × 0,8 × 0,8)
la source
KDB (Q), 50 * 0,8 * 0,8 = 32
Je me sens un peu triste avec ma soumission :( Il devrait y avoir une meilleure façon de le faire!
Explication
Tester
la source
k){-1{" "/:,/'$:(0N 4#0b\:x),x}@'1+!x}
Lisp commun, 96,0
But:
(* 150 .8 .8)
Exemple
Appel de la fonction avec 10:
Explication
(format()"~39,'0b ~:*~d" #b101010101010)
donne:La chaîne intermédiaire (un tableau) est modifiée pour mettre un caractère espace aux indices de base zéro suivants: 4 9 14 19 24 29 34. Ensuite, elle est imprimée.
Notez que le
(format t"~39,'0,' ,4:b ~:*~d" #b101010101010)
format apparemment simple ne fait pas ce que nous voulons. Il imprime:(le rembourrage n'est pas groupé par 4)
la source
Rubis, 28 (35 * 0,8)
la source
C, 97 * 0,8 * 0,8 = 62,08
Exemple de sortie pour l'entrée "5":
Je pourrais ajouter un caractère d'espace supplémentaire pour séparer les nombres décimaux des nombres binaires, mais techniquement, le problème ne l'exige pas, je pense?EDIT: Merci, CL!la source
x%-4-1
parx%-4-2
pour ajouter l'espace entre le binaire et le décimal sans coût supplémentaire en octets. (Cela éliminerait également l'espace supplémentaire au début de chaque ligne.)Octave, 23 caractères
Exemple de sortie pour l'entrée 5:
la source
MatLab, 19 octets
Pas trop à celui-ci, MatLab a un convertisseur décimal en binaire intégré et imprime automatiquement le résultat.
la source
Julia, 42 octets
C'est un peu plus court sans les bonus.
Cela crée une fonction sans nom qui prend un entier et imprime la représentation binaire de chaque nombre de 1 à n , chaque gauche étant rempli de zéros à 64 caractères.
Avec bonus, 78 octets * 0,8 * 0,8 = 49,92
Cela crée une fonction sans nom qui prend un entier et imprime la représentation binaire comme précédemment, cette fois divisée en groupes de 4 avec le nombre en base 10 à la fin.
la source
Common Lisp, score: 64,0
100 octets * 0,8 * 0,8
Je suis assez satisfait de mon score, mais je pense toujours qu'il devrait y avoir une possibilité de simplifier un peu mon code.
Production
Code
Explication
Comme décrit dans la réponse de coredump , la chaîne de format
ne produit pas de nombres en base2 mais il semble qu'il n'y ait pas non plus de possibilité de bien regrouper. Par conséquent, je contrains la chaîne dans une liste et j'itère dessus en sélectionnant des groupes de 4 avec cette chaîne de format:
"~ {~ a ~ a ~ a ~ a ~} ~ a ~%"
Après chaque groupe de 4, il y a un blanc et après le dernier groupe, le numéro base10 est imprimé.
Sans regroupement (60x0,8 => 48,0)
Cela utilise ~: * pour traiter à nouveau l'argument de format (unique).
la source
PHP, 51,84 (81 × 0,8 × 0,8)
Version 32 bits, car PHP est limité à seulement 32 bits sous Windows, que le système d'exploitation soit 64 bits ou non.
Prend un argument de ligne de commande.
la source
CoffeeScript, 60,8 (76 × 0,8)
Version 32 bits pour les raisons mentionnées ci-dessus , car CoffeeScript se compile en JavaScript.
Avec le regroupement, il devient légèrement plus long: 64,64 (101 × 0,8 × 0,8)
la source
Haskell, 56 octets
Usage:
Pour 64 bits, remplacez le
32
par64
. Chaque autre numéro fonctionne aussi.la source
J, 20 octets
Exemple d'entrée et de sortie:
la source
Rapide: 98,56 (154 * 0,8 * 0,8)
la source
Rubis, 64 bits
70 * 0,8 * 0,8 = 44,8 octets (fractionné, décimal)
51 * 0,8 = 40,8 octets (décimal)
67 * 0,8 = 53,6 octets (fractionné)
44 octets (pas de bonus)
la source
05AB1E ,
1311 octets-2 octets grâce à @ Mr.Xcoder .
Sorties sans délimiteur d'espace ni numéro de séquence.
Essayez-le en ligne.
Explication:
la source
Lb32jsäð0:»
fonctionne pour 11 octetsj
le préfixe pour qu'il devienne la bonne longueur.