Палиндромное число (в случае, если вы не знаете) - это число, которое читает то же самое вперед и назад (например, 11). Первый 15 непалиндромный номер: 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26
. Это A029742 . Мне постоянно нужны эти цифры, но мой стикер очень мал, поэтому ваш код должен быть как можно короче.
правила
- Каждая отправка должна быть полной программой или функцией (например, в C вы не можете просто определить функцию без заголовков, но вы можете определить функцию с необходимыми заголовками).
- Если это возможно, предоставьте ссылку на сайт, где ваша программа может быть протестирована.
- Ваша программа не должна ничего писать
STDERR
.
- Вы можете принять входные данные в качестве аргумента или от
STDIN
(или ближайшей альтернативы на вашем языке).
- Программы оцениваются в соответствии с байтами . Обычный набор символов - UTF-8, если вы используете другой, пожалуйста, укажите.
- Стандартные лазейки запрещены.
Тестовые случаи
1
==> 10
-----
5
==> 15
-----
12
==> 23
счет
Это код-гольф , поэтому выигрывает минимум байтов.
Материалы
Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:
# Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Если вы хотите включить в заголовок несколько чисел (например, потому что ваш результат равен сумме двух файлов или вы хотите перечислить штрафы за флаг интерпретатора отдельно), убедитесь, что фактический результат является последним числом в заголовке:
# Perl, 43 + 2 (-p flag) = 45 bytes
Вы также можете сделать название языка ссылкой, которая затем будет отображаться во фрагменте списка лидеров:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Leaderboard
Вот фрагмент стека, который генерирует как регулярную таблицу лидеров, так и обзор победителей по языкам.
/* 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
будет 4-е число?Ответы:
Pyth, 7 байт
Тестирование
Объяснение:
источник
Haskell, 38 байт
Использует индекс на основе 0.
([x|x<-[1..],(/=)<*>reverse$show x]!!) 11
->23
.Проверка, сохранять ли число,
(/=)<*>reverse$show x
преобразуется в(show x) /= (reverse (show x))
, т. Е. Проверять, не является ли строковое представление числа не равным обратному строковому представлению.источник
Брахилог ,
1411 байт-3 байта танков для фатализации
объяснение
Попробуйте онлайн!
источник
;İ{ℕ≜.↔¬}ᶠ⁽t
на 2 байта короче.iterate
на 1 байт короче:;0{<≜.↔¬}ⁱ⁽
Желе, 9 байт
1 байт благодаря @ Sp3000 .
Попробуйте онлайн!
Тестирование.
объяснение
источник
123Ṛ
³
. Если вы поместите вход в STDIN, вы также можете сбросить его0
. (В последней версии JellyṚḌ_ø#Ṫ
тоже работает, но это новее, чем этот вызов.)05AB1E , 8 байтов
Код:
Использует кодировку CP-1252 . Попробуйте онлайн! ,
источник
Â
? PS для всех, кто читает это: теперь может быть 5 байтовµNÂʽ
.½
является неявным.½
хотя я упоминал об этом в совете, который написал сам ..>. <Мысль¼
(увеличение counter_variable на 1) была неявной для цикла whileµ
, но это действительно½
( если вершина стека равна 1: вместо этого увеличьте counter_variable на 1) ..Clojure, 62 байта
0 индексированные. Генерируйте лениво бесконечный диапазон непалиндромных чисел, используя понимание списка, и возьмите
i
одно. Смотрите это онлайн: https://ideone.com/54wXI3источник
PowerShell v2 +, 65 байт
Перебирает числа от
0
(неявное значение для неинициализированного$i
) до тех пор, пока мы не найдем входные$args[0]
совпадения, а затем выведет последнее. Обратите внимание, что мы не инициализируем цикл, поэтому$j=0
неявно.Каждую итерацию мы предварительно увеличиваем
$i
и проверяем, не равно ли она$i
обращенному. Если это так, это означает, что мы нашли непалиндром, так что приращение$j
. Затем цикл продолжается столько раз, сколько необходимо.Примеры
источник
Python 2, 60 байт
Одноиндексированная функция, принимающая входные данные
n
через аргумент и возвращающаяn
непалиндромное число.Как это работает
Это исчерпывающий рекурсивный поиск, который последовательно проверяет целые числа
i
в диапазоне,[1,∞)
покаn
не будут найдены непалиндромные числа; посколькуi
как предварительно увеличен,i-1
то возвращается. Проверка, является ли число палиндромным, выполняется путем преобразования в строку, обращения и затем проверки, равны ли исходная и обращенная строки.Код логически эквивалентен:
что само по себе является:
Попробуйте это на Ideone
источник
Clojure, 62 байта
Совсем другой подход, чем другой ответ, но равной длины.
источник
R ,
1331179376 байт-16 байт благодаря JayCe. -41 байт благодаря Джузеппе.
Попробуйте онлайн!
источник
F
и т.д .: TIO . Кроме того, почему вы ограничиваете цикл до(0:97)+10
?all(D==rev(D))
гдеD
находится вектор цифр. Я считаю, чтоwhile
цикл будет короче, и, как спрашивает @JayCe, почему вы проверяете числа только между 10 и 107?while
цикл, сохраняя при этом байты.Далее ,
10399 байтовПопробуйте онлайн!
объяснение
Зацикливаясь n раз, каждая итерация находит следующее непалиндромное число, увеличивая счетчик на 1, пока число не станет равным обратному.
Код без правил
Обычно я не стал бы «разгадывать» код, но так как этот код несколько беспорядочный, я подумал, что это поможет
Код Объяснение
источник
Perl 6 , 29 байт
(использует 0 на основе индекса)
Использование:
источник
На самом деле, 17 байтов
Попробуйте онлайн!
Значения 1-индексированы. Это можно легко изменить на 0 с индексированием, заменив первое
R
наr
. Но,R
это то что я первоначально напечатал, так что это то, что я собираюсь с.Непалиндромные числа удовлетворяют
a(n) ≈ n + 10
, поэтому2n+9
является достаточной верхней границей.Объяснение:
источник
JavaScript (ES6), 54 байта
Использует индексирование на основе 1. Работает только до 7624 числа.
использование
JavaScript (ES6), 59 байт
Не использует рекурсию и поэтому может обрабатывать гораздо большие входные данные.
использование
источник
Javascript (с использованием внешней библиотеки) (97 байт)
Ссылка на lib: https://github.com/mvegh1/Enumerable
Объяснение кода: в библиотеке есть статический метод Sequence, где первый параметр определяет, сколько элементов будет гарантировано для создания последовательности, а второй параметр - это предикат, принимающий текущее значение итерации «i». Предикат преобразует целое число в строку, которая преобразуется в массив символов путем вызова _.From. Массив char сравнивается с обращением массива char, и если они не равны, массив char объединяется обратно в строку и возвращается. В противном случае ничего не возвращается (т. Е. Результат не определен, который библиотека всегда будет игнорировать). Наконец, возвращается последний элемент последовательности, то есть N-й элемент
источник
C, 84 байта
Функция
f(n)
принимает целое числоn
и возвращаетn-th
непалиндромное число (на основе 1).Проверьте это на Ideone!
Это довольно тривиальный код, поэтому, возможно, есть место для улучшения.
источник
n=n?g(n/10,r*10+n%10):r;}s;f(n){for(s=9;n--;g(++s,0)-s||s++);n=s;
вместоreturn n?g(n/10,r*10+n%10):r;}s;f(n){for(s=9;n--;g(++s,0)==s&&s++);return s;
Рубин, 54 байта
Эта функция индексируется 1 и частично основана на ответе Javascript от Dom Hastings . Я думаю, что есть способ поиграть в гольф лучше, особенно с этим последним тройным состоянием. Кроме того, эта функция в настоящее время возвращает строку, которую, возможно, потребуется отредактировать позже. Любые предложения по игре в гольф приветствуются.
Ungolfed:
источник
C ++ (GCC), 148 байт
Это основанный на 1, и алгоритм действительно наивен
источник
#import
это расширение компилятора gcc. Это является устаревшим, но это на самом деле не имеет значения , здесьAPL NARS 35 символов
это функция v; «⍎⌽⍕» r перевод строки r в строку, обратная строка, переход от строки к номеру. Тестовые и справочные функции:
источник
Шелуха , 6 байт
Ура за
↔
:)Попробуйте онлайн!
объяснение
источник
Perl 5 , 33 + 1 (
-p
) = 34 байтаПопробуйте онлайн!
источник
C # 7, 89 байт
1 проиндексирован Попробуйте на Repl.It
Я не думаю, что это использует какие-либо языковые функции из C # 7, но я положил туда, так как это то, что я протестировал против
источник
Japt ,
141211109 байт1-индексированных
Попытайся
источник
Java 8,
1179594 байта0 индексированные
Объяснение:
Попробуй это здесь.
источник
new StringBuffer(int)
не равноnew StringBuffer(String)
, ниString.equals(StringBuffer)
вместоString.equals(String)
.. Это старый ответ , однако, так что я могу использовать ,(++r+"").contains(new StringBuffer(r+"").reverse())
чтобы сохранить 1 байт.TCC, 11 байт
Попробуйте онлайн!
источник
tcc.lua
файлом с отметкой времени 16-07-26 12:46 UTC, в котором не было?>
команды. Если для вашего ответа требуется версия языка, который задним числом задал вопрос, вы должны пометить его как неконкурентный в заголовке. Я уберу свое понижение, когда ты это сделаешь.