La séquence de van der Corput est l'un des exemples les plus simples de séquence à faible écart . Son n
-ième terme est juste 0.(n written in base 10 and mirrored)
, donc ses premiers termes sont:
0.1
, 0.2
, 0.3
, 0.4
, 0.5
, 0.6
, 0.7
, 0.8
, 0.9
,
0.01
, 0.11
, 0.21
, 0.31
, 0.41
, 0.51
, 0.61
, 0.71
, 0.81
, 0.91
,
0.02
, 0.12
, 0.22
, 0.32
, 0.42
, 0.52
, 0.62
, 0.72
, 0.82
, 0.92
, ...
Le défi
Écrivez un programme ou une fonction dans n'importe quel langage de programmation qui prend en entrée un entier positif n
inférieur à 10^6
et renvoie ou imprime les premiers n
termes de la séquence van der Corput. Le format de sortie peut être une liste de nombres à virgule flottante, une liste de chaînes du formulaire 0.digits
ou une chaîne unique où les termes sont séparés par des virgules et / ou des espaces, des retours à la ligne.
Les failles standard sont interdites. Le code source le plus court gagne.
Oracle SQL 11.2,
646258 octetsAncienne version
Concaténer '' à un nombre le transforme en chaîne. Il est 2 octets plus court que l'utilisation de TRIM (), qui est plus court que TO_CHAR ().
Étant donné que la concaténation d'une chaîne en un nombre donne une chaîne, il est possible d'utiliser cette chaîne pour gérer le «0». une partie du résultat.
la source
CJam,
1411 octetsMerci à Sp3000 pour avoir économisé 3 octets.
Testez-le ici.
Explication
la source
Perl 6,
242220 octetsMerci Aleks-Daniel Jakimenko-A. pour encore deux octets
ancienne version
EDIT: Merci raiph pour 2 octets supplémentaires
usage
la source
{("0."~.flip for ^$_)}
enregistre 2 octetsMathematica, 40 octets
Cas de test
la source
Pyth, 8 octets
Essayez-le en ligne.
C'est vraiment juste une combinaison de ceci et de cette réponse. C'est pourquoi j'en fais un wiki communautaire.
la source
Pyth, 11 octets
Essayez-le ici!
Explication
la source
Pyth - 10 octets
Essayez-le en ligne ici .
la source
VSQ...
JavaScript (ES6), 58
Une fonction anonyme renvoyant une chaîne avec des valeurs séparées par des virgules
TESTER
la source
MATL , 10 octets
Essayez-le en ligne!
la source
Haskell,
36, 27 octetsDeux octets enregistrés par nimi et 7 autres par Lynn.
la source
f n=reverse.show<$>[1.0..n]
Brachylog , 23 octets
Cela prend un nombre en entrée et renvoie le résultat à STDOUT, séparé par des espaces.
Assez simple. Malheureusement, nous devons concaténer le nombre avec une chaîne vide pour convertir ce nombre en chaîne (
:""rc
), car il n'y a pas encore de prédicat de conversion intégré.La conversion en chaîne est nécessaire, car si nous inversons les chiffres du nombre, les zéros en tête (par exemple,
10
devient01
) seraient perdus.la source
PowerShell, 52 octets
Un peu plus longtemps que je ne le souhaiterais, mais utilise quelques astuces intéressantes.
La
while
boucle est évidente, mais le conditionnel est un peu délicat - nous avons$a
(qui commence comme$null
lors du premier référencement) puis soustrayons notre numéro d'entrée$args[0]
. Dans PowerShell, les opérations mathématiques sur le$null
traitent comme zéro, donc pour l'entrée20
par exemple, cela se traduira par-20
. Étant donné que tout nombre non nul est$true
, la boucle conditionnelle sera$true
jusqu'à ce qu'elle$a
soit égale à notre nombre d'entrée (auquel point la soustraction sera égale0
ou$false
). L'astuce vient du post-incrément++
, qui ne s'exécute qu'après le calcul de la soustraction, donc la gestion de l'entrée de1
sera correctement sortie0.1
, puis arrêtera la boucle à l'itération suivante.Chaque fois dans la boucle, nous créons simplement un littéral de chaîne qui est laissé sur le pipeline et produit en conséquence. Nous construisons cela à partir de la
"0."
concaténation avec le résultat de l'-join
opérateur unaire qui a agi sur le tableau de caractères créé à partir de la prise de la chaîne en"$a"
arrière (en l'indexant via la plage"$a".length..0
).Exécutions de test
la source
Bash, 36 octets
Prend un nombre comme argument de ligne de commande et génère chaque terme sur une ligne distincte. Par exemple:
la source
seq -f%g.0 $1|rev
.seq
pouvait faire une sortie formatée.Japt, 12 octets
Testez-le en ligne!
Comment ça marche
la source
cire d'abeille ,
5753 octetsEn travaillant sur le problème de sortie des chiffres binaires pour le rosettacode, j'ai remarqué que je pouvais utiliser le même algorithme de division courte pour la séquence de van der Corput, en utilisant simplement la division et le modulo par 10 au lieu de 2. La sortie est inversée dans les deux cas.
Golfé par 4 octets, en reflétant le code:
Jolie empreinte hexagonale, pour une orientation plus facile:
Explication d'un cycle à travers le programme, en utilisant le code d'origine:
Exemple:
la source
R, 59 octets
explication
example(strsplit)
crée la fonctionstrReverse
(alors ça devrait être évident)À l'aide
IRanges::reverse
, cela pourrait être joué à 47 octetsla source
Python 3, 47 octets
une solution plus courte avec Python 2
Cas de test
la source
f=
n'est pas nécessaire, elle fait donc 47 octets de long.n-1
termes.lambda n:['0.'+`i+1`[::-1]for i in range(n)]
est plus court si vous utilisez Python 2. En outre, vous ne devez pas dire "Python 3.5" à moins qu'il ne nécessite la version 3.5, ce qui n'est pas le cas. Cette version nécessite Python 2.𝔼𝕊𝕄𝕚𝕟, 12 caractères / 15 octets
Try it here (Firefox only).
Ça va.
Explication
⩤⁽1ï⒨
crée une plage[1,ï]
sur laquelle mapper,ß)
convertit mapitem (nombre) en chaîne,Ė⍞.0
concatène.0
jusqu'à la fin etᴙ
inverse la chaîne entière.la source
Python 2, 54 octets
Explication:
Parcourez l'ensemble
[1,input)
et ajoutez l'inversei
à.
.Encore un golf plus.
la source
`i`
au lieu destr(i)
. De plus, je pense que vous devez imprimer le zéro de tête.PHP,
4541 octetsPrend l'argument d'entrée de CLI. Courez comme ceci:
la source
Rétine, 39 octets
Prend entrée en unaire.
Essayez-le en ligne ici.
la source
Gema, 45 caractères
Exemple d'exécution:
la source
Julia ,
50383331 octetsJ'ai opté pour un format de sortie différent pour raccourcir le code de 12 octets. La fonction renvoie maintenant un tableau de chaînes. Raccourci de 5 octets supplémentaires. Merci à Alex A. de m'avoir rappelé l'interpolation de chaînes et d'utiliser une fonction anonyme (se débarrasser de 2 octets de plus).
Ou bien
Tester
la source
n->["0."reverse("$i")for i=1:n]
map(n->["0."reverse("$i")for i=1:n],3)
(pour n = 3) ne serait-elle pas nécessaire pour produire une sortie? Cela ferait (au moins) aussi longtemps que ma solution.Python 2, 40 octets
Exemple:
Résolution algébrique:
la source
jq 1.5,
4035 caractères(Code de 34 caractères + option de ligne de commande de 1 caractère.)
Exemple d'exécution:
Test en ligne (le passage
-r
par l'URL n'est pas pris en charge - vérifiez vous-même la sortie brute.)La même chose avec les liens vers la documentation:
Comme alternative plus lisible, ce qui précède pourrait également être écrit comme ceci ( en ligne ):
la source
"\(.+1).0"/""
marche?\(…)
et une division/
qui, en cas de chaîne , est divisée.BBC BASIC,
898887 octetsUtilisé des abréviations pour raccourcir autant que possible les choses. Compatible avec Brandy Basic et BASIC 2 sur la machine d'origine.
Pour les BBC BASIC modernes, vous pouvez également laisser de côté les numéros de ligne pour économiser deux octets supplémentaires.
la source
Dyalog APL , 12 octets
Essayez-le en ligne!
Simple: la
{
chaîne de fonctions'0.'
avant,
la⌽
représentation⍕
de chaîne inversée de l'argument⍵
de la fonction}
pour chacun¨
des nombres 1 à n⍳
.la source
JS, 66
La sortie est le tableau appelé "o"
la source
Groovy, 36 caractères
Exemple d'exécution:
la source