Contribution
Un entier n (≥ 1) et un chiffre d (un entier tel que 0 ≤ d ≤ 9).
Dans l'un ou l'autre ordre; de stdin ou des paramètres ou autre chose; à un programme ou une fonction; etc.
Sortie
Les entiers de 1 à n inclus (dans l’ordre) dont les représentations décimales contiennent un nombre pair de d s. (C'est-à-dire que les entiers dans la liste sont les entiers qui ont respectivement un nombre pair de d s.)
Dans tout format standard, etc. En particulier, la sortie ne doit pas être représentée en décimal.
En cas de sortie sous forme de chaîne unique, les entiers doivent être séparés d'une manière ou d'une autre (espaces, virgules, nouvelles lignes, octets nuls, peu importe).
Exemples
in(d,n) ↦ out
1,12 ↦ 2 3 4 5 6 7 8 9 11
0,111 ↦ 1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,21,22,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,41,42,43,44,45,46,47,48,49,51,52,53,54,55,56,57,58,59,61,62,63,64,65,66,67,68,69,71,72,73,74,75,76,77,78,79,81,82,83,84,85,86,87,88,89,91,92,93,94,95,96,97,98,99,100,111
Merci
À quintopia pour le titre.
Réponses:
Gelée, 7 octets
Essayez-le en ligne!
Comment ça marche
la source
05AB1E ,
11 à10 octetsCode:
Explication:
Essayez-le en ligne
Utilise le codage CP-1252 .
la source
Haskell,
69635250 octetsLa solution directe pour mon premier post ici. Il utilise
show
pour compter le nombre ded
'. Je n'ai pas explicitement utiliséChar
comme entrée pourd
, ce qui aurait permis de sauvegarder126 octets (après l'édition de Damien).EDIT: 11 octets en moins grâce à Damien! EDIT 2: encore 2 octets en moins grâce à nimi!
la source
Befunge,
1080945 octetsLe score est donné que nous comptons tout le carré, y compris les nouvelles lignes, ce qui est logique. Vous pouvez copier coller le code dans l'interpètre . Fournissez deux entrées, d'abord d puis n . Cette solution ne fonctionne pas pour les valeurs supérieures à n > 999.
Ce ne sera évidemment pas un prétendant au grand prix, mais cela fait un moment que je veux implémenter un code-golf à Befunge, alors j'ai décidé de le faire. Je pense que cela ne sera même pas proche d'une solution optimale de Befunge, car c'est la première chose que j'ai faite à Befunge. Alors, les astuces sont les bienvenues, si vous avez besoin d'éclaircissements ou d'informations supplémentaires, merci de me le faire savoir dans les commentaires.
Tentative d'explication:
Dans la première colonne, nous lisons un entier à partir de l'entrée, ajoutez-y 48 (6 * 8, vous le verrez plus souvent) pour le convertir en valeur ASCII correspondante et le mettre à
(10, 0)
.&
- lire l'entrée68*+
- ajouter 4855+0p
- mettre la valeur à(10, 0)
Notez que le
d
at(1, 0)
est un moyen simple d’obtenir le nombre 100 sur la pile.Après cela, nous allons à l’est et lisons un autre entier et nous dirigeons vers ce que j’appelle le ASCIIfier. Cela transforme le numéro actuel en une série de caractères ASCII. ASCIIfier est la pièce rectangulaire de
(13, 12)
à(26, 17)
. Il consiste en deux boucles, qui comptent d’abord les centaines et les dizaines puis les placent dans les trois chiffres de(6, 0)
et(5, 0)
. Après cela, le dernier chiffre est mis en(4, 0)
. Les chiffres sont donc inversés.Après avoir placé l'entier actuel dans une série de caractères ASCII, nous allons un peu plus au sud pour supprimer les zéros ajoutés. Ainsi, par la suite, ce qui est initialement les trois zéros en haut, sera le nombre actuel, sans les zéros ajoutés.
Ensuite, nous remontons vers le nord, où nous mettons les trois chiffres sur la pile. Nous parcourons les trois chiffres de la boucle supérieure en incrémentant à chaque fois le compteur situé à
(1, 1)
si le chiffre actuel correspond à l'entrée dLorsque cela est fait, nous vérifions si le compteur situé à
(1, 1)
est impair ou pair. S'il est égal, nous émettons le nombre actuel et passons à la grande boucle externe pour décrémenter la valeur actuelle et recommencer.la source
Python 2, 50 octets
Une fonction récursive qui prend le chiffre en
d
tant que chaîne et la limite supérieuren
sous forme de nombre.Le nombre de chiffres
d
dansn
est testé pour être pair en prenant son complément de bit modulo 2, ce qui donne1
pour pair et0
pour impair. Ce nombren
est ajouté à la liste et la fonction est renvoyée àn-1
, s'arrêtant via un court-circuit logique sur la liste vide lorsquen==0
.Si la sortie peut être donnée en ordre décroissant, un octet peut être sauvegardé, pour 49 octets:
Ancienne solution à 51 octets:
Une fonction anonyme qui prend le chiffre en
d
tant que chaîne et la limite supérieuren
sous forme de nombre.Deux astuces sont utilisées:
range
étant indexé à zéro0...n-1
, nous en ajoutons un à chaque valeur potentiellex
. Ensuite, compterd
« s enx+1
, il enregistre un caractère à utiliser sa négation~x
à la place.~_%2
premier basculement de bit pour changer de parité, puis prenons le dernier bit avec&1
(comme%2
ici), produisant une valeur de vérité uniquement si l'original était pair.la source
Pyth, 10 octets
Essayez-le en ligne. Suite de tests.
la source
Lua, 86 Bytes
Si l'utilisation d'un séparateur incohérent est autorisée, je pourrais remplacer
io.write
parprint
, ce qui signifie que les nombres seraient séparés par une ou plusieurs nouvelles lignes.Ceci est un programme complet, qui doivent être appelé comme ceci:
lua file.lua d n
.Il supprime tous les non-
d
caractères du nombre actuel et utilise la taille de la chaîne résultante pour décider si elle doit ou non être sortie.la source
JavaScript (ES6) 64
Une fonction anonyme avec sortie sur console. Mise en œuvre simple utilisant
split
le décompte des chiffres.La sortie utilisant
alert
serait moins de 6 octets, mais je n'aime vraiment pas ça (et je ne vais pas battre les langues du jouet de toute façon)la source
MATL ,
12 à10 octetsLa première entrée est n , la seconde est d en tant que chaîne. Par exemple:
Essayez-le en ligne!
la source
Ruby,
4742 octetsExécuter avec d et n comme paramètres de ligne de commande, par exemple
la source
?1
pour"1"
. Et c'est moins joli, mais un octet plus court, à faire à la%2>0
place de.odd?
PowerShell,
6255edit: utiliser un bloc param dans ce cas est plus court. enlevé de l'espace redondant
Pas une langue de golf mais c’est le seul que je connaisse vraiment. Cela fonctionnerait enregistré en tant que script et appelé comme ceci
M:\Scripts\cgNeverTellMeTheOdds.ps1 1 12
. Le premier argument est le chiffre d et le second est le nombre entier n .Créez un tableau du nombre 1 à n . Pour chacun de ceux-ci, convertissez cela en un tableau de caractères. 10 serait 1,0. L'utilisation en
-match
tant qu'opérateur de tableau renvoie tous les éléments correspondant au chiffre d . Comptez le nombre d'éléments retournés et mod 2 le résultat. Le résultat sera 0 pour pair et 1 pour impair. 0 étant un booléen faux, nous utilisons donc!
pour la boucle l'évaluation des résultats impairs à faux et des résultats pairs à vrais.La sortie est une nouvelle ligne délimitée sur la console.
la source
Retina ,
99 à105 octetsNotez les espaces de fin.
<empty>
représente une ligne vide.Prend les entrées comme
1 12
. La sortie est séparée par espace en ordre décroissant.J'ai modifié
0*1(0|10*1)*
pour correspondre à un nombre impair de\1
dans un nombre. J'ai changé0
pour(?!\1)\d
, et1
pour\1
créer la longue ligne de regex que vous voyez ci-dessus. Comprendre le fonctionnement de la regex liée est crucial.Essayez-le en ligne
Explication commentée de l'ancienne version
Si l'ordre décroissant était correct
la source
1+
et$.0
pour effectuer la conversion de retour unaire en décimal.Utilitaires Bash + GNU, 37
la source
*
parenthèse d'ouverture suivante semble être redondante. Le supprimer vous évite 1 octet.Python 3.4,
92857985 octetsSauvegardé 7 octets grâce à Mego
Sauvegardé 6 autres octets grâce à mbomb007
ces 6 octets car Python 3.x
Ceci est mon premier coup au code de golf, alors rien ne va ici!
la source
`d`
place destr(d)
, et si vous supposez que n est un entier (<2 ** 32), vous pouvez utiliser à la`i`
place destr(i)
.__repr__
Python 2, ils ont été supprimés en Python 3. Vous devriez probablement changer votre en-tête pour refléter cette restriction.Perl 6, 38 octets
la source
Brachylog , 32 octets
Attend N en entrée et le chiffre en sortie, par exemple
brachylog_main(12,1).
Explication
la source
Mathematica, 54 octets
la source
Perl, 28
2931octetsComprend +2 pour
-an
Exécutez avec le chiffre de spécification et comptez sur des lignes consécutives sur STDIN:
la source
Oracle SQL 11.2,
11182 octetsla source
Kotlin, 136 octets
Programme entièrement fonctionnel, prend les arguments comme suit: nd
Essayez-le en ligne!
la source
Java 8, 84 octets
Ceci est une expression lambda pour un
BiConsumer< Integer, Integer>
:Explication:
pour chaque nombre compris entre 1 et n, convertissez-le en chaîne et scindez-le en utilisant d comme délimiteur. S'il a été divisé en un nombre impair de sections, imprimez le numéro suivi d'une nouvelle ligne.
la source
Rétine,
727155Un grand merci à Martin qui, par accident, m'a rappelé les groupes de couplage atomique!
Essayez-le en ligne!
Explication:
Remplacez le nombre, mais pas le chiffre, par son équivalent unaire.
\B
correspond à chaque position (largeur nulle) qui n'est pas une limite de mot. Notez que cela ne correspond à aucun des éléments suivants: le début de la chaîne, la fin de la chaîne ou toute position autour de la virgule. Chacune de ces non-limites est ensuite remplacée par une nouvelle ligne, puis la chaîne précédant la correspondance ($`
). Cela donne une liste comme:Où se
d
trouve n'importe quel chiffre décimal.Ceci convertit toutes les listes de
1
s en la représentation décimale de leurs longueurs. Cela n’aura pas d’incidence sur le contenu de la liste1
avant la virgule, car sa longueur est toujours1
la même.Ici, le
G
mode grep est activé, ce qui signifie que les lignes qui correspondent à l'expression rationnelle sont conservées et les autres lignes sont ignorées. Cette expression rationnelle est compliquée, mais elle correspond essentiellement à des groupes de 2 du premier chiffre (stockés dans le groupe de capture 1, afin que nous puissions la référencer avec\1
).La clé ici, est que si elle échouait lors de l'utilisation de la correspondance non gourmande jusqu'aux deux premières apparences des chiffres, il serait alors juste de revenir en arrière et de réessayer, avec une
.
correspondance sur le chiffre. Cela ferait correspondre des nombres comme 111 lorsque notre chiffre est 1. Par conséquent, nous utilisons?>
pour rendre la correspondance atomique, ce qui empêche essentiellement l'expression régulière de revenir en arrière avant qu'elle ne corresponde à cette valeur. Une correspondance atomique fonctionne un peu comme une correspondance possesive dans certaines saveurs. Puisque le*
méta-caractère est suivi d'un,?
les caractères.
seront comparés jusqu'à ce qu'il soit capable de correspondre à ce que nous avons stocké\1
. Ensuite, une fois que nous faisons cela deux fois, la "mémoire" de l'expression régulière est détruite, empêchant ainsi le comportement normal de se produire..
correspond à un caractère supplémentaire, notre\1
chiffre, qui aurait créé des correspondances non valides.Ensuite, nous vérifions que, à partir de la position finale, après l’appariement de groupes répétés de deux des chiffres entrés, nous ne pouvons pas faire correspondre un autre chiffre entré.
Ici, nous supprimons simplement le chiffre et la virgule de chacune des chaînes, nous obtenons donc notre belle réponse.
la source
Python 2,
5754 octetsUsage
la source
Julia, 44 octets
C'est une fonction qui accepte deux entiers et retourne un tableau.
Nous commençons avec l'ensemble des entiers de 1 à
n
, inclus. Pour chaque entieri
, nous déterminons à quels chiffres décimaux sont égauxd
, ce qui donne un tableau booléen. Nous souhaitonssum
obtenir le nombre d'occurrences ded
sous forme de chiffrei
etfilter
la plage d'origine en fonction de la parité de la somme.Essayez-le ici
la source
Sérieusement, 17 octets
Prend les entrées en tant que
n\n'd'
(entier, nouvelle ligne, chaîne).Essayez-le en ligne!
Explication:
la source
Mathematica, 45 octets
Utilise le intégré
DigitCount
.la source
Japt,
1312 octetsL'entrée est n , puis d entre guillemets. Testez-le en ligne!
Comment ça marche
la source
CJam, 38 octets
Explication
la source
Scala, 66 octets
la source
R, 145 octets (je suis sûr qu'il y a moyen de raccourcir cela davantage) :)
la source