Un número palindrómico (en caso de que no lo sepa) es un número que lee el mismo hacia atrás y hacia adelante (ejemplo, 11). Los primeros números 15 no palindrómicas son: 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26
. Este es A029742 . Constantemente necesito estos números, pero mi bloc de notas adhesivas es muy pequeño, por lo que su código debe ser lo más corto posible.
Reglas
- Cada envío debe ser un programa o función completa (por ejemplo, en C, no puede simplemente definir una función sin encabezados, sino que puede definir una función CON encabezados necesarios).
- Si es posible, proporcione un enlace a un sitio donde se pueda probar su programa.
- Su programa no debe escribirle nada
STDERR
.
- Puede tomar la entrada como argumento o desde
STDIN
(o la alternativa más cercana en su idioma).
- Los programas se puntúan según los bytes . El juego de caracteres habitual es UTF-8; si está utilizando otro, especifíquelo.
- Las lagunas estándar están prohibidas.
Casos de prueba
1
==> 10
-----
5
==> 15
-----
12
==> 23
Tanteo
Este es el código de golf , por lo que gana menos bytes.
Envíos
Para asegurarse de que su respuesta se muestre, comience con un título, utilizando la siguiente plantilla de Markdown:
# Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Si desea incluir varios números en su encabezado (por ejemplo, porque su puntaje es la suma de dos archivos o desea enumerar las penalizaciones de la bandera del intérprete por separado), asegúrese de que el puntaje real sea el último número en el encabezado:
# Perl, 43 + 2 (-p flag) = 45 bytes
También puede hacer que el nombre del idioma sea un enlace que luego aparecerá en el fragmento de la tabla de clasificación:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Tabla de clasificación
Aquí hay un fragmento de pila para generar una tabla de clasificación regular y una descripción general de los ganadores por idioma.
/* Configuration */
var QUESTION_ID = 79251; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 53406; // This should be the user ID of the challenge author.
/* App */
var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;
function answersUrl(index) {
return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
jQuery.ajax({
url: answersUrl(answer_page++),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
answers.push.apply(answers, data.items);
answers_hash = [];
answer_ids = [];
data.items.forEach(function(a) {
a.comments = [];
var id = +a.share_link.match(/\d+/);
answer_ids.push(id);
answers_hash[id] = a;
});
if (!data.has_more) more_answers = false;
comment_page = 1;
getComments();
}
});
}
function getComments() {
jQuery.ajax({
url: commentUrl(comment_page++, answer_ids),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
var SCORE_REG = /<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var OVERRIDE_REG = /^Override\s*header:\s*/i;
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
var valid = [];
answers.forEach(function(a) {
var body = a.body;
a.comments.forEach(function(c) {
if(OVERRIDE_REG.test(c.body))
body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
});
var match = body.match(SCORE_REG);
if (match)
valid.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
link: a.share_link,
});
});
valid.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});
var languages = {};
var place = 1;
var lastSize = null;
var lastPlace = 1;
valid.forEach(function (a) {
if (a.size != lastSize)
lastPlace = place;
lastSize = a.size;
++place;
var answer = jQuery("#answer-template").html();
answer = answer.replace("{{PLACE}}", lastPlace + ".")
.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)
.replace("{{LINK}}", a.link);
answer = jQuery(answer);
jQuery("#answers").append(answer);
var lang = a.language;
if (/<a/.test(lang)) lang = jQuery(lang).text();
languages[lang] = languages[lang] || {lang: a.language, user: a.user, size: a.size, link: a.link};
});
var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);
langs.sort(function (a, b) {
if (a.lang > b.lang) return 1;
if (a.lang < b.lang) return -1;
return 0;
});
for (var i = 0; i < langs.length; ++i)
{
var language = jQuery("#language-template").html();
var lang = langs[i];
language = language.replace("{{LANGUAGE}}", lang.lang)
.replace("{{NAME}}", lang.user)
.replace("{{SIZE}}", lang.size)
.replace("{{LINK}}", lang.link);
language = jQuery(language);
jQuery("#languages").append(language);
}
}
body { text-align: left !important}
#answer-list {
padding: 10px;
width: 290px;
float: left;
}
#language-list {
padding: 10px;
width: 290px;
float: left;
}
table thead {
font-weight: bold;
}
table td {
padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b">
<div id="answer-list">
<h2>Leaderboard</h2>
<table class="answer-list">
<thead>
<tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr>
</thead>
<tbody id="answers">
</tbody>
</table>
</div>
<div id="language-list">
<h2>Winners by Language</h2>
<table class="language-list">
<thead>
<tr><td>Language</td><td>User</td><td>Score</td></tr>
</thead>
<tbody id="languages">
</tbody>
</table>
</div>
<table style="display: none">
<tbody id="answer-template">
<tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
<table style="display: none">
<tbody id="language-template">
<tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
15
sería el 4to número?Respuestas:
Pyth, 7 bytes
Banco de pruebas
Explicación:
fuente
Haskell, 38 bytes
Utiliza índice basado en 0.
([x|x<-[1..],(/=)<*>reverse$show x]!!) 11
->23
.La prueba de si mantener un número se
(/=)<*>reverse$show x
traduce(show x) /= (reverse (show x))
, es decir, verificar si la representación de cadena del número no es igual al reverso de la representación de cadena.fuente
Brachylog ,
1411 bytes-3 tanques de bytes para Fatalizar
Explicación
Pruébalo en línea!
fuente
;İ{ℕ≜.↔¬}ᶠ⁽t
es 2 bytes más corto.iterate
es 1 byte más corto:;0{<≜.↔¬}ⁱ⁽
Jalea, 9 bytes
1 bytes gracias a @ Sp3000 .
Pruébalo en línea!
Banco de pruebas.
Explicación
fuente
123Ṛ
³
. Si coloca la entrada en STDIN, también puede soltarla0
. (En la última versión de Jelly,ṚḌ_ø#Ṫ
también funciona, pero es más nuevo que este desafío.)05AB1E , 8 bytes
Código:
Utiliza la codificación CP-1252 . Pruébalo en línea! .
fuente
Â
? PD para cualquiera que lea esto: ahora puede tener 5 bytesµNÂʽ
.½
también está implícito.½
de ser implícita, a pesar de que lo he mencionado en una punta que escribí yo mismo ..>. <Pensó que el¼
(aumento counter_variable por 1) estaba implícito para el bucle, mientras queµ
por un momento, pero es de hecho el½
( si la parte superior de la pila es 1: aumente counter_variable en 1) en su lugar ..Clojure, 62 bytes
0 indexado. Genere un rango perezosamente infinito de números no palindrómicos usando la comprensión de la lista y tome el
i
primero. Véalo en línea: https://ideone.com/54wXI3fuente
PowerShell v2 +, 65 bytes
Recorre los números desde
0
(valor implícito para no inicializados$i
) hasta que encontremos$args[0]
muchas coincidencias de entrada , luego genera la última. Tenga en cuenta que no inicializamos el ciclo, por lo que$j=0
está implícito.En cada iteración, realizamos un incremento previo
$i
y verificamos si no es igual a$i
invertido. Si es así, eso significa que hemos encontrado un no palíndromo, así que incremente$j
. El ciclo luego continúa tantas veces como sea necesario.Ejemplos
fuente
Python 2, 60 bytes
Una función de un índice que toma la entrada de
n
vía argumento y devuelve eln
número no palindrómico.Cómo funciona
Esta es una búsqueda recursiva exhaustiva, que prueba consecutivamente enteros
i
en el rango[1,∞)
hasta quen
se hayan encontrado números no palindrómicos; dado quei
se incrementa previamente,i-1
luego se devuelve. La prueba de si un número es palindrómico se realiza convirtiendo a una cadena, invirtiendo y luego verificando si las cadenas originales e inversas son iguales.El código es lógicamente equivalente a:
que en sí mismo es esencialmente:
Pruébalo en Ideone
fuente
Clojure, 62 bytes
Un enfoque bastante diferente al de la otra respuesta, pero de igual longitud.
fuente
R ,
1331179376 bytes-16 bytes gracias a JayCe. -41 bytes gracias a Giuseppe.
Pruébalo en línea!
fuente
F
, etc .: TIO . Además, ¿por qué estás restringiendo el ciclo(0:97)+10
?all(D==rev(D))
dondeD
está un vector de dígitos. Creo que elwhile
ciclo será más corto y, como @JayCe pregunta, ¿por qué solo verificas números entre 10 y 107?while
bucle y al mismo tiempo guardar bytes.Adelante (gforth) ,
10399 bytesPruébalo en línea!
Explicación
Bucle n veces, cada iteración encuentra el siguiente número no palindrómico incrementando un contador en 1 hasta que el número no sea igual a sí mismo invertido
Código sin golf
Normalmente no "desligaría" el código, pero dado que este código es algo desordenado, pensé que ayudaría
Explicación del código
fuente
Perl 6 , 29 bytes
(usa índice basado en 0)
Uso:
fuente
En realidad, 17 bytes
Pruébalo en línea!
Los valores están indexados en 1. Esto podría cambiarse fácilmente a 0 indexado reemplazando el primero
R
conr
. Pero,R
es lo que escribí inicialmente, así que con eso voy.Los números no palindrómicos satisfacen
a(n) ≈ n + 10
, así que2n+9
es un límite superior suficiente.Explicación:
fuente
JavaScript (ES6), 54 bytes
Utiliza indexación basada en 1. Solo funciona hasta el número 7624.
Uso
JavaScript (ES6), 59 bytes
No utiliza la recursividad y, por lo tanto, puede manejar entradas mucho más grandes.
Uso
fuente
Javascript (usando una biblioteca externa) (97 bytes)
Enlace a lib: https://github.com/mvegh1/Enumerable
Explicación del código: la biblioteca tiene un método estático llamado Secuencia, donde el primer parámetro define cuántos elementos garantizará la secuencia para crear, y el segundo parámetro es un predicado que acepta el valor de iteración actual, "i". El predicado convierte el entero en una cadena, que se convierte en una matriz de caracteres llamando a _.From. La matriz de caracteres se compara con la inversión de la matriz de caracteres, y si no son iguales, la matriz de caracteres se une de nuevo en una cadena y se devuelve. De lo contrario, no se devuelve nada (es decir, el resultado no está definido, lo que la biblioteca siempre ignorará). Finalmente, se devuelve el último elemento de la secuencia, es decir, el enésimo elemento
fuente
C, 84 bytes
La función
f(n)
toma un enteron
y devuelven-th
un número no palindrómico (basado en 1).Pruébalo en ¡Pruébalo Ideone!
Es un código bastante trivial, por lo tanto, probablemente haya espacio para mejorar.
fuente
n=n?g(n/10,r*10+n%10):r;}s;f(n){for(s=9;n--;g(++s,0)-s||s++);n=s;
lugar dereturn n?g(n/10,r*10+n%10):r;}s;f(n){for(s=9;n--;g(++s,0)==s&&s++);return s;
Ruby, 54 bytes
Esta función está indexada en 1 y se basa parcialmente en la respuesta Javascript de Dom Hastings . Creo que hay una manera de jugar mejor al golf, especialmente con esa última condición ternaria. Además, esta función actualmente devuelve una cadena, que puede necesitar editarse más tarde. Cualquier sugerencia de golf es bienvenida.
Sin golf:
fuente
C ++ (GCC), 148 bytes
Está basado en 1 y el algoritmo es realmente ingenuo
fuente
#import
es una extensión del compilador de gcc. Se está en desuso, pero esto no importa realmente aquíAPL NARS 35 caracteres
es la función v; "⍎⌽⍕" r traduce el número r en una cadena, invierte esa cadena, traduce de una cadena a otra. Funciones de prueba y ayuda:
fuente
Casco , 6 bytes
Yay por
↔
:)Pruébalo en línea!
Explicación
fuente
Perl 5 , 33 + 1 (
-p
) = 34 bytesPruébalo en línea!
fuente
C # 7, 89 bytes
1 indexado Probar en Rep.
No creo que esto use ninguna función de lenguaje de c # 7, pero lo puse allí ya que eso es lo que probé
fuente
Japt ,
141211109 bytes1 indexado
Intentalo
fuente
Java 8,
1179594 bytes0 indexado
Explicación:
Pruébalo aquí
fuente
new StringBuffer(int)
no es igualnew StringBuffer(String)
ni es enString.equals(StringBuffer)
lugar deString.equals(String)
... Sin embargo, esta es una respuesta antigua, así que puedo usar(++r+"").contains(new StringBuffer(r+"").reverse())
para guardar 1 byte.TCC, 11 bytes
Pruébalo en línea!
fuente
tcc.lua
archivo con la marca de tiempo 16-07-26 12:46 UTC, que no tenía el?>
comando. Si su respuesta requiere una versión del idioma posterior al desafío, debe etiquetarla como no competitiva en el encabezado. Eliminaré mi voto negativo cuando lo hagas.