Eine palindromische Zahl (falls Sie sie nicht kennen) ist eine Zahl, die vor und zurück gleich lautet (Beispiel 11). Der erste 15 nicht-Zahlenpalindrom ist: 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26
. Dies ist A029742 . Ich brauche diese Nummern ständig, aber mein Notizblock ist sehr klein, sodass Ihr Code so kurz wie möglich sein muss.
Regeln
- Jede Einreichung muss ein vollständiges Programm oder eine vollständige Funktion sein (z. B. können Sie in C nicht nur eine Funktion ohne Überschriften definieren, sondern Sie können eine Funktion mit den erforderlichen Überschriften definieren).
- Wenn es möglich ist, geben Sie einen Link zu einer Site an, auf der Ihr Programm getestet werden kann.
- Ihr Programm darf nichts schreiben
STDERR
.
- Sie können Eingaben als Argument oder von
STDIN
(oder der nächstgelegenen Alternative in Ihrer Sprache) nehmen.
- Programme werden nach Bytes bewertet . Der übliche Zeichensatz ist UTF-8. Wenn Sie einen anderen Zeichensatz verwenden, geben Sie diesen bitte an.
- Standardlücken sind verboten.
Testfälle
1
==> 10
-----
5
==> 15
-----
12
==> 23
Wertung
Das ist Code-Golf , also gewinnt das Minimum an Bytes.
Einreichungen
Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
# Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:
# Perl, 43 + 2 (-p flag) = 45 bytes
Sie können den Namen der Sprache auch als Link festlegen, der dann im Leaderboard-Snippet angezeigt wird:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Bestenliste
Hier ist ein Stack-Snippet, um sowohl eine reguläre Rangliste als auch eine Übersicht der Gewinner nach Sprache zu generieren.
/* 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
wäre das die 4. Nummer?Antworten:
Pyth, 7 Bytes
Testsuite
Erläuterung:
quelle
Haskell, 38 Bytes
Verwendet einen 0-basierten Index.
([x|x<-[1..],(/=)<*>reverse$show x]!!) 11
->23
.Der Test, ob eine Zahl aufbewahrt werden
(/=)<*>reverse$show x
soll(show x) /= (reverse (show x))
, führt zu dem Ergebnis, dass überprüft wird, ob die Zeichenfolgendarstellung der Zahl nicht der Umkehrung der Zeichenfolgendarstellung entspricht.quelle
Brachylog ,
1411 Bytes-3 Bytes Panzer zu töten
Erläuterung
Probieren Sie es online!
quelle
;İ{ℕ≜.↔¬}ᶠ⁽t
ist 2 Bytes kürzer.iterate
1 Byte kürzer:;0{<≜.↔¬}ⁱ⁽
Gelee, 9 Bytes
1 Byte dank @ Sp3000 .
Probieren Sie es online!
Testsuite.
Erläuterung
quelle
123Ṛ
³
. Wenn Sie den Eingang auf STDIN legen, können Sie ihn auch löschen0
. (In der neuesten Version von JellyṚḌ_ø#Ṫ
funktioniert es auch, aber es ist neuer als diese Herausforderung.)05AB1E , 8 Bytes
Code:
Verwendet die CP-1252- Codierung. Probieren Sie es online! .
quelle
Â
? PS für alle anderen, die dies lesen: Kann jetzt 5 Bytes seinµNÂʽ
.½
ebenfalls implizit ist.½
implizit zu sein, obwohl ich es in einer Spitze erwähnte ich selbst geschrieben habe ..>. <Dachte der¼
(Erhöhung counter_variable von 1) war implizit für die while-Schleifeµ
für einen Moment, aber es ist in der Tat die½
( Wenn oben auf dem Stapel 1 ist, erhöhen Sie stattdessen counter_variable um 1).Clojure, 62 Bytes
0-indiziert. Generieren Sie mit Hilfe des Listenverständnisses
i
einen trägen unendlichen Bereich von nicht-palindromen Zahlen und nehmen Sie diese . Sehen Sie es online: https://ideone.com/54wXI3quelle
PowerShell v2 +, 65 Byte
Durchläuft die Zahlen von
0
(impliziter Wert für nicht initialisiert$i
) bis zur Eingabe$args[0]
vieler Übereinstimmungen und gibt dann die letzte aus. Beachten Sie, dass wir die Schleife nicht initialisieren, also$j=0
implizit.Jede Iteration wird vorab inkrementiert
$i
und geprüft, ob sie nicht$i
umgekehrt ist. Wenn ja, bedeutet dies, dass wir ein Nicht-Palindrom gefunden haben$j
. Die Schleife wird dann so oft wie nötig fortgesetzt.Beispiele
quelle
Python 2, 60 Bytes
Eine Funktion mit einem Index, die die Eingabe eines
n
via-Arguments annimmt und dien
nicht-palindromische Zahl zurückgibt .Wie es funktioniert
Dies ist eine umfassende rekursive Suche, bei der ganze Zahlen
i
im Bereich nacheinander getestet werden,[1,∞)
bisn
nicht-palindrome Zahlen gefunden wurden. dai
vorinkrementiert wird,i-1
wird dann zurückgegeben. Das Testen, ob eine Zahl palindrom ist, wird durchgeführt, indem in eine Zeichenfolge konvertiert wird, umgekehrt wird und dann überprüft wird, ob die ursprüngliche und die umgekehrte Zeichenfolge gleich sind.Der Code ist logisch äquivalent zu:
was selbst ist im Wesentlichen:
Probieren Sie es auf Ideone
quelle
Clojure, 62 Bytes
Ein ganz anderer Ansatz als die andere Antwort, aber gleich lang.
quelle
R ,
1331179376 Byte-16 Bytes dank JayCe. -41 Bytes dank Giuseppe.
Probieren Sie es online!
quelle
F
, etc .: TIO . Warum beschränken Sie die Schleife auch auf(0:97)+10
?all(D==rev(D))
woD
ein Vektor von Ziffern ist. Ich glaube, einewhile
Schleife wird kürzer sein, und wie @JayCe fragt, warum überprüfen Sie nur Zahlen zwischen 10 und 107?while
Schleife implementiert wird, während gleichzeitig Bytes gespart werden.Viertens (gviertens) ,
103 bis99 BytesProbieren Sie es online!
Erläuterung
Bei jeder Iteration wird n-mal die nächste nicht-palindromische Zahl gefunden, indem ein Zähler um 1 erhöht wird, bis die Zahl nicht mehr umgekehrt ist
Ungolfed Code
Normalerweise würde ich den Code nicht "ungolfen", aber da dieser Code etwas chaotisch ist, dachte ich, dass es helfen würde
Code-Erklärung
quelle
Perl 6 , 29 Bytes
(verwendet 0-basierten Index)
Verwendung:
quelle
Eigentlich 17 Bytes
Probieren Sie es online!
Die Werte sind 1-indiziert. Dies könnte leicht geändert werden 0-indiziert durch die erste ersetzt
R
mitr
. AberR
genau das habe ich anfangs geschrieben, also gehe ich damit um.Die nichtpalindromischen Zahlen genügen
a(n) ≈ n + 10
also2n+9
einer ausreichenden Obergrenze.Erläuterung:
quelle
JavaScript (ES6), 54 Byte
Verwendet 1-basierte Indizierung. Funktioniert nur bis zur 7624. Nummer.
Verwendung
JavaScript (ES6), 59 Byte
Verwendet keine Rekursion und kann daher viel größere Eingaben verarbeiten.
Verwendung
quelle
Javascript (mit externer Bibliothek) (97 Bytes)
Link zu lib: https://github.com/mvegh1/Enumerable
Codeerklärung: Die Bibliothek verfügt über eine statische Methode namens Sequence, wobei der erste Parameter definiert, wie viele Elemente die Sequenz garantiert erstellt, und der zweite Parameter ein Prädikat ist, das den aktuellen Iterationswert "i" akzeptiert. Das Prädikat konvertiert die Ganzzahl in eine Zeichenfolge, die durch Aufrufen von _.From in ein Zeichen-Array konvertiert wird. Das char-Array wird mit der Umkehrung des char-Arrays verglichen. Wenn sie nicht gleich sind, wird das char-Array wieder zu einer Zeichenfolge zusammengefügt und zurückgegeben. Andernfalls wird nichts zurückgegeben (dh das Ergebnis ist undefiniert, was die Bibliothek immer ignoriert). Schließlich wird das letzte Element der Sequenz, dh das N-te Element, zurückgegeben
quelle
C 84 Bytes
Die Funktion
f(n)
akzeptiert eine Ganzzahln
und gibt einen-th
nicht-palindromische Zahl zurück (1 basierend).Teste es auf Ideone!
Es ist ein ziemlich trivialer Code, daher gibt es wahrscheinlich Raum für Verbesserungen.
quelle
n=n?g(n/10,r*10+n%10):r;}s;f(n){for(s=9;n--;g(++s,0)-s||s++);n=s;
stattdessen vorreturn 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
Diese Funktion ist 1-indiziert und basiert teilweise auf der Javascript-Antwort von Dom Hastings . Ich denke, es gibt eine Möglichkeit, dies besser zu spielen, insbesondere bei dieser letzten ternären Bedingung. Außerdem gibt diese Funktion derzeit eine Zeichenfolge zurück, die möglicherweise später bearbeitet werden muss. Anregungen zum Golfen sind willkommen.
Ungolfed:
quelle
C ++ (GCC), 148 Bytes
Es ist 1-basiert und der Algorithmus ist wirklich naiv
quelle
#import
ist eine Compiler-Erweiterung von gcc. Es ist veraltet, aber das spielt hier keine RolleAPL NARS 35 Zeichen
es ist die Funktion v; "⍎⌽⍕" r setzt die Zahl r in der Zeichenkette um, kehrt diese Zeichenkette um und setzt sie von Zeichenkette zu Zahl um. Test- und Hilfefunktionen:
quelle
Schale , 6 Bytes
Ja für
↔
:)Probieren Sie es online!
Erläuterung
quelle
Perl 5 , 33 + 1 (
-p
) = 34 BytesProbieren Sie es online!
quelle
C # 7, 89 Bytes
1 indiziert Versuchen Sie es mit Repl.It
Ich glaube nicht, dass dies irgendwelche Sprachfunktionen aus C # 7 verwendet, aber ich habe es da hingestellt, da ich das getestet habe
quelle
Japt ,
141211109 Bytes1-indiziert
Versuch es
quelle
Java 8,
1179594 Bytes0-indiziert
Erläuterung:
Probieren Sie es hier aus.
quelle
new StringBuffer(int)
ist nicht gleichnew StringBuffer(String)
, noch istString.equals(StringBuffer)
anstelle vonString.equals(String)
.. Dies ist jedoch eine alte Antwort, damit ich(++r+"").contains(new StringBuffer(r+"").reverse())
1 Byte speichern kann.TCC, 11 Bytes
Probieren Sie es online!
quelle
tcc.lua
Datei mit dem Zeitstempel 16-07-26 12:46 UTC, die den?>
Befehl nicht hatte. Wenn für Ihre Antwort eine Version der Sprache erforderlich ist, in der die Herausforderung nachgestellt ist, müssen Sie sie im Header als nicht konkurrierend kennzeichnen. Ich werde meine Ablehnung entfernen, wenn Sie dies tun.