Um número palíndrico (caso você não saiba) é um número que lê o mesmo para trás e para a frente (exemplo, 11). Os primeiros números 15 não palindrómicos são: 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26
. Este é o A029742 . Eu preciso constantemente desses números, mas meu bloco de anotações é muito pequeno, portanto seu código deve ser o mais curto possível.
Regras
- Cada envio deve ser um programa ou função completo (por exemplo, em C, você não pode simplesmente definir uma função sem cabeçalhos, mas pode definir uma função COM os cabeçalhos necessários).
- Se possível, forneça um link para um site onde seu programa possa ser testado.
- Seu programa não deve escrever nada para
STDERR
.
- Você pode receber informações como argumento ou de
STDIN
(ou a alternativa mais próxima em seu idioma).
- Os programas são pontuados de acordo com os bytes . O conjunto de caracteres usual é UTF-8; se você estiver usando outro, especifique.
- As brechas padrão são proibidas.
Casos de teste
1
==> 10
-----
5
==> 15
-----
12
==> 23
Pontuação
Isso é código-golfe , então o mínimo de bytes vence.
Submissões
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
# Language Name, N bytes
onde N
está o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Se você quiser incluir vários números no cabeçalho (por exemplo, porque sua pontuação é a soma de dois arquivos ou você deseja listar as penalidades do sinalizador de intérpretes separadamente), verifique se a pontuação real é o último número no cabeçalho:
# Perl, 43 + 2 (-p flag) = 45 bytes
Você também pode transformar o nome do idioma em um link que será exibido no snippet da tabela de classificação:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Entre os melhores
Aqui está um snippet de pilha para gerar uma classificação regular e uma visão geral dos vencedores 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
seria o quarto número?Respostas:
Pitão, 7 bytes
Suíte de teste
Explicação:
fonte
Haskell, 38 bytes
Usa índice baseado em 0.
([x|x<-[1..],(/=)<*>reverse$show x]!!) 11
->23
.O teste para manter um número é
(/=)<*>reverse$show x
traduzido(show x) /= (reverse (show x))
, ou seja, verifique se a representação em cadeia do número não é igual ao reverso da representação em cadeia.fonte
Braquilog ,
1411 bytes-3 bytes de tanques para Fatalizar
Explicação
Experimente online!
fonte
;İ{ℕ≜.↔¬}ᶠ⁽t
é 2 bytes mais curto.iterate
1 byte é menor:;0{<≜.↔¬}ⁱ⁽
Geléia, 9 bytes
1 bytes graças a @ Sp3000 .
Experimente online!
Suíte de teste.
Explicação
fonte
123Ṛ
³
. Se você inserir a entrada no STDIN, poderá soltá-la0
também. (Na última versão do Jelly,ṚḌ_ø#Ṫ
funciona também, mas é mais recente que este desafio.)05AB1E , 8 bytes
Código:
Usa a codificação CP-1252 . Experimente online! .
fonte
Â
? PS para qualquer pessoa que esteja lendo isso: agora pode ter 5 bytesµNÂʽ
.½
também está implícito.½
estar implícita, apesar de eu ter mencionado isso em uma dica que escrevi para mim ..>. <Pensei que o¼
(aumento counter_variable por 1) estivesse implícito no loop whileµ
por um momento, mas é de fato o½
( se o topo da pilha for 1: aumente counter_variable em 1).Clojure, 62 bytes
Indexado a 0. Gere um intervalo infinitamente lento de números não palindrômicos usando a compreensão de lista e
i
um. Veja on-line: https://ideone.com/54wXI3fonte
PowerShell v2 +, 65 bytes
Faz um loop através de números de
0
(valor implícito para não inicializado$i
) até encontrarmos$args[0]
muitas correspondências de entrada e, em seguida, produz a última. Observe que não inicializamos o loop, portanto,$j=0
está implícito.A cada iteração, pré-incrementamos
$i
e verificamos se não é igual a$i
invertida. Nesse caso, significa que encontramos um não-palíndromo, então incremente$j
. O loop continua quantas vezes for necessário.Exemplos
fonte
Python 2, 60 bytes
Uma função indexada que recebe entrada de
n
argumento via e retorna on
número não palindrômico.Como funciona
Esta é uma pesquisa recursiva exaustiva, que testa consecutivamente números inteiros
i
no intervalo[1,∞)
até quen
números não palindrômicos sejam encontrados; já quei
é pré-incrementado,i-1
é retornado. Testar se um número é palíndrico é realizado convertendo-se em uma sequência, revertendo e verificando se as seqüências originais e as revertidas são iguais.O código é logicamente equivalente a:
que em si é essencialmente:
Experimente no Ideone
fonte
Clojure, 62 bytes
Uma abordagem bem diferente da outra resposta, mas com o mesmo comprimento.
fonte
R ,
1331179376 bytes-16 bytes graças ao JayCe. -41 bytes graças a Giuseppe.
Experimente online!
fonte
F
, etc .: TIO . Além disso, por que você está restringindo o loop(0:97)+10
?all(D==rev(D))
ondeD
está um vetor de dígitos. Acredito que umwhile
loop será mais curto e, como @JayCe pergunta, por que você está verificando apenas números entre 10 e 107?while
loop e ao mesmo tempo salvar bytes.Quarto (gforth) ,
10399 bytesExperimente online!
Explicação
Loop n vezes, cada iteração encontra o próximo número não palindrômico, incrementando um contador em 1 até que o número não seja igual a si mesmo invertido
Código Ungolfed
Normalmente eu não "desdobrava" o código, mas como esse código é um pouco confuso, achei que ajudaria
Código Explicação
fonte
Perl 6 , 29 bytes
(usa índice baseado em 0)
Uso:
fonte
Na verdade, 17 bytes
Experimente online!
Os valores são indexados em 1. Isso pode ser facilmente alterado para indexado 0, substituindo o primeiro
R
porr
. Mas,R
é o que eu digitei inicialmente, então é com isso que eu vou.Os números não palíndricos satisfazem
a(n) ≈ n + 10
, assim2n+9
como um limite superior suficiente.Explicação:
fonte
JavaScript (ES6), 54 bytes
Usa indexação baseada em 1. Só funciona até o número 7624.
Uso
JavaScript (ES6), 59 bytes
Não usa recursão e, portanto, pode lidar com entradas muito maiores.
Uso
fonte
Javascript (usando biblioteca externa) (97 bytes)
Link para lib: https://github.com/mvegh1/Enumerable
Explicação do código: A biblioteca possui um método estático chamado Sequence, onde o primeiro parâmetro define quantos elementos a sequência garantirá criar, e o segundo parâmetro é um predicado que aceita o valor atual da iteração, "i". O predicado converte o número inteiro em uma sequência, que é convertida em uma matriz de caracteres chamando _.From. A matriz de caracteres é comparada com a reversão da matriz de caracteres e, se elas não forem iguais, a matriz de caracteres será juntada novamente em uma string e retornada. Caso contrário, nada será retornado (ou seja, o resultado é indefinido, que a biblioteca sempre ignorará). Finalmente, o último elemento da sequência, ou seja, o enésimo elemento é retornado
fonte
C, 84 bytes
A função
f(n)
recebe um número inteiron
e retornan-th
um número não palíndrico (baseado em 1).Teste em Ideone!
É um código bastante trivial, portanto, provavelmente há espaço para melhorias.
fonte
n=n?g(n/10,r*10+n%10):r;}s;f(n){for(s=9;n--;g(++s,0)-s||s++);n=s;
vez 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
Essa função é indexada em 1 e é parcialmente baseada na resposta Javascript de Dom Hastings . Eu acho que há uma maneira de jogar isso melhor, especialmente com essa última condição ternária. Além disso, atualmente, essa função retorna uma string, que pode precisar ser editada posteriormente. Todas as sugestões de golfe são bem-vindas.
Ungolfed:
fonte
C ++ (GCC), 148 bytes
É baseado em 1 e o algoritmo é realmente ingênuo
fonte
#import
é uma extensão do compilador do gcc. Ele foi descontinuado, mas isso realmente não importa aquiAPL NARS 35 caracteres
é a função v; "⍎⌽⍕" r traduz o número r na string, inverte a string, traduz da string para o número. Teste e funções de ajuda:
fonte
Casca , 6 bytes
Yay for
↔
:)Experimente online!
Explicação
fonte
Perl 5 , 33 + 1 (
-p
) = 34 bytesExperimente online!
fonte
C # 7, 89 bytes
1 tentativa indexada de Repl.It
Eu não acho que isso use nenhum recurso de linguagem do c # 7, mas eu coloquei lá, já que foi contra isso que testei
fonte
Japt ,
141211109 bytesIndexado 1
Tente
fonte
Java 8,
1179594 bytesIndexado a 0
Explicação:
Experimente aqui.
fonte
new StringBuffer(int)
não é igual anew StringBuffer(String)
, nem é emString.equals(StringBuffer)
vez deString.equals(String)
.. Esta é uma resposta antiga, no entanto, para que eu possa usar(++r+"").contains(new StringBuffer(r+"").reverse())
para salvar 1 byte.TCC, 11 bytes
Experimente online!
fonte
tcc.lua
arquivo com carimbo de data / hora 16-07-26 12:46 UTC, que não tinha o?>
comando. Se sua resposta exigir uma versão do idioma que pós-desafio, você deve rotulá-la como não concorrente no cabeçalho. Vou remover meu voto negativo quando você o fizer.