Étant donné un entier non négatif n, énumérez tous les nombres palindromiques (en décimal) entre 0 et n (plage incluse). Un nombre palindromique reste le même lorsque ses chiffres sont inversés.
Les premiers nombres palindromiques (en base 10) sont donnés ici :
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, 303, 313, 323, 333, 343, 353, 363, 373, 383, 393, 404, 414, 424, 434, 444, 454, 464, 474, 484, 494, 505, 515, ...
Il s'agit d'un golf de code avec le prix allant au moins de personnages. Les nombres palindromiques doivent être sortis un par ligne vers stdout. Le programme doit lire n à partir de la ligne de commande ou stdin.
n
partie de la gamme doit-elle être incluse?Réponses:
Golfscript, 15 caractères
la source
Perl 5.10, 29 (ou 39) caractères
Nécessite la
say
fonctionnalité activée. 29 caractères si vous considérez que c'est gratuit, sinon 39 à ajouteruse 5.010;
. Argument sur STDIN.Perl, 35 caractères
en utilisant l'ancienne convention perlgolf qui
#!perl
n'est pas comptée mais tous les drapeaux qui la suivent le sont.Perl, 36 caractères
Si aucun des autres n'est admissible.
la source
$/
est le séparateur d'enregistrements d'entrée, qui par défaut est un saut de ligne. C'est juste un peu plus court que littéral"\n"
.map{say if$_==reverse}0..<>
-E
à la place de-e
, vous obtenezsay
gratuitement.Befunge
320313303 personnages(y compris les nouvelles lignes et les espaces importants)
Je me demande si je pourrais réduire cela en redirigeant les chemins ...
Edit: refait la partie supérieure pour éviter une ligne supplémentaire.
la source
Perl 5.10 - 27 caractères
map{say if$_==reverse}0..<>
Lit l'argument depuis stdin.
la source
Ruby 1.9, 39 caractères
Entrée (ne doit pas se terminer par une nouvelle ligne) via stdin. Exemple d'appel:
40 caractères pour une version qui utilise des arguments de ligne de commande:
la source
p
au lieu deputs
.irb(main):023:0> p (?0..gets).select{|i|i==i.reverse} 1 ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "11", "22", "33", "44", "55", "66", "77", "88", " 99"] => ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "11", "22", "33", "44", "55", "66", "77", "88" , "99"]
Le code ci-dessous fonctionne pour moip ('0'..gets[0..-2]).select{|i|i==i.reverse}
Pouvez-vous expliquer votre code.p
etputs
ne sont pas équivalents, en fait, l'utilisationp
interrompt la sortie, car met écrit chaque élément sur une nouvelle ligne, s'il est appelé avec un tableau , alors qu'ilp
appelle simplement.to_s
.J , 20 caractères
la source
,"0
.,.
fonctionne aussiPython,
5751 caractèresUsage:
la source
for i in range(input()):if`i`==`i`[::-1]:print i
print
et le faireif`i`==`i`[::-1]:i
(je dis cela parce que la solution Scala en dépend).Perl> 5.10: 25 caractères
la source
APL (
2517)la source
Javascript
122108107 caractères ...Je suis sûr que cela peut être joué plus - je suis nouveau dans ce domaine!
ou
la source
var
s ne sont pas nécessaires, vous pouvez simplement rendre les choses globales. N'aprompt()
pas non plus strictement besoin de paramètres.prompt()
sauver un point - virgule:n=prompt(o=[]);
.var i=0
qui peut êtrevar
supprimé dans votrefor
.i++<n
compareri<n
avant d'ajouter 1 ài
. Ainsi, il court jusqu'ài=n
. Si vous vouliez vous arrêteri=n-1
, vous utiliseriez à la++i<n
place.alert(o.join(" "))
doit êtrealert(o.join("\n"))
conforme aux spécifications. Ajoutez 1 à votre nombre de personnages lorsque vous corrigez ce problème.Perl - 43 caractères
Ceci est ma première tentative de golf de code, donc je suis presque sûr qu'un pro Perl pourrait jouer au golf.
la source
Haskell 66 caractères
la source
PHP
6458Changement de $ _GET ['n'] en $ argv [1] pour l'entrée en ligne de commande.
la source
Scala 59
la source
readInt
par un numéro concret, en ligne.PHP,
595553 caractèresUsage
Edit: merci Thomas
la source
echo "$i\n"
pour obtenirecho"$i\n"
. Cela vous fera économiser quelques caractères. De plus, si vous voulez être effronté, vous pouvez changer\n
pour `` et enregistrer un caractère.C, 98 caractères
la source
k (23 caractères)
la source
Mathematica 61
la source
Befunge, 97 (taille de grille 37x4 = 148)
Ayez une meilleure réponse Befunge à cette question. Il s'agit spécifiquement de Befunge-93; Je pourrais probablement le rendre encore plus compact avec Befunge-98. Je vais l'inclure dans une prochaine édition.
Comme vous ne pouvez pas opérer sur des chaînes dans Befunge, le mieux que je pouvais faire était de calculer l'inverse des chiffres de chaque numéro (ce que je suis surpris d'avoir pu gérer sans
p
etg
) et de le comparer au numéro d'origine. L'inverse des chiffres occupe la majeure partie du code (essentiellement les troisième et quatrième lignes).Notez que le programme, tel qu'il est actuellement, imprime les nombres à l'envers de l'entrée jusqu'à 0. Si c'est un gros problème, faites le moi savoir. (Le défi dit seulement de les énumérer, pas spécifiquement dans l'ordre croissant.)
la source
\n
seules, c'est donc 94 octets de long. Je ne pense pas que votre "taille de grille" ait une pertinence particulière.05AB1E , 5 octets (non concurrents)
La langue est postérieure au défi et n'est donc pas compétitive . Code:
Explication:
Utilise l' encodage CP-1252 . Essayez-le en ligne! .
la source
LʒÂQ
a 4 ans mais ne participe toujours pas à la compétition.Brachylog (2), question post-langue:
Avec le format d'E / S indiqué dans la question, 8 octets
Essayez-le en ligne!
Avec des règles d'E / S PPCG modernes, 4 octets
Essayez-le en ligne!
Il s'agit d'une fonction qui génère toutes les sorties, pas un programme complet comme l'exemple précédent, et donc ne respecte pas les spécifications telles qu'écrites, mais j'ai pensé montrer à quoi ressemblerait le programme si la question avait été écrite aux normes d'E / S modernes (qui permettent l'utilisation de fonctions et la sortie via des générateurs).
Explication
Pour la version complète du programme, nous créons une variable temporaire
A
pour contenir la sortie, la étiquetons explicitement (cela se fait implicitement pour le prédicat principal d'un programme) et utilisons laẉ⊥
technique bien connue pour sortir les éléments d'un générateur en sortie standard.la source
Python
la source
Groovy, 83
la source
Q (34 caractères)
Passez n plutôt que n + 1 comme argument pour cette solution Q.
la source
Q, 32
la source
Q (33)
Probablement une façon plus nette de le faire, mais de toute façon, exemple d'utilisation (vous entrez n + 1 pour arriver à n):
Suggestion de tmartin, descend à 29:
Même usage.
la source
Python, 106 caractères
usage:
la source
C # (
217214191 caractères)Version golfée:
Lisible:
Ceci imprime les palindromes dans l'ordre décroissant en utilisant l'opérateur n -> 0. (comme n va à 0).
* La version éditée remplace do ... while avec while, économisant 3 caractères, mais maintenant vous devez entrer avec n + 1.
* édité: a trouvé un meilleur moyen d'inverser la chaîne sans convertir en tableau:
Lisible:
la source
PHP 53
53 peut-il être inférieur? Quatre options différentes:
Si vous voulez devenir funky ...
PHP 47
Vous devez ignorer le texte d'erreur. Cependant, les numéros de palindrome sont toujours affichés sur la ligne de commande.
la source
Pyth, 11
Exemple:
la source