Liczba palindromowa (na wypadek, gdybyś nie wiedział) to liczba, która czyta to samo do tyłu i do przodu (na przykład 11). Pierwsze numery 15 non-palindromowe to: 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26
. To jest A029742 . Ciągle potrzebuję tych liczb, ale mój notes jest bardzo mały, więc twój kod musi być jak najkrótszy.
Zasady
- Każde przesłanie musi być pełnym programem lub funkcją (np. W C nie można po prostu zdefiniować funkcji bez nagłówków, ale można zdefiniować funkcję Z niezbędnymi nagłówkami).
- Jeśli to możliwe, podaj link do strony, na której można przetestować Twój program.
- Twój program nie może nic pisać
STDERR
.
- Możesz wziąć dane wejściowe jako argument lub z
STDIN
(lub najbliższej alternatywy w twoim języku).
- Programy są oceniane według bajtów . Typowy zestaw znaków to UTF-8, jeśli używasz innego, proszę podać.
- Standardowe luki są zabronione.
Przypadki testowe
1
==> 10
-----
5
==> 15
-----
12
==> 23
Punktacja
To jest golf golfowy , więc wygrywa najmniej bajtów.
Zgłoszenia
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
# Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik jest sumą dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:
# Perl, 43 + 2 (-p flag) = 45 bytes
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie tabeli wyników:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Tabela liderów
Oto fragment kodu, który pozwala wygenerować zarówno zwykłą tabelę wyników, jak i przegląd zwycięzców według języka.
/* 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
byłby to czwarty numer?Odpowiedzi:
Pyth, 7 bajtów
Zestaw testowy
Wyjaśnienie:
źródło
Haskell, 38 bajtów
Używa indeksu 0.
([x|x<-[1..],(/=)<*>reverse$show x]!!) 11
->23
.Test, czy zachować liczbę,
(/=)<*>reverse$show x
przekłada się na(show x) /= (reverse (show x))
, tzn. Sprawdź, czy reprezentacja ciągu liczby nie jest równa odwrotności reprezentacji ciągu.źródło
Brachylog ,
1411 bajtów-3 bajty czołgów do Fatalize
Wyjaśnienie
Wypróbuj online!
źródło
;İ{ℕ≜.↔¬}ᶠ⁽t
jest o 2 bajty krótszy.iterate
jest o 1 bajt krótsze:;0{<≜.↔¬}ⁱ⁽
Galaretka, 9 bajtów
1 bajt dzięki @ Sp3000 .
Wypróbuj online!
Zestaw testowy.
Wyjaśnienie
źródło
123Ṛ
³
. Jeśli umieścisz wejście na STDIN, możesz również upuścić0
. (W najnowszej wersji JellyṚḌ_ø#Ṫ
też działa, ale jest nowsza niż to wyzwanie.)05AB1E , 8 bajtów
Kod:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online! .
źródło
Â
? PS dla każdego, kto to czyta: Może teraz mieć 5 bajtówµNÂʽ
.½
jest również domyślny.½
domniemaniu, mimo że wspomniałem o tym we wskazówce, którą sam napisałem ..>. <Myślałem, że¼
(wzrost przeciw zmiennej o 1) jest przez chwilę domyślny dla pętli whileµ
, ale w rzeczywistości jest to½
( jeśli szczyt stosu to 1: zamiast tegoClojure, 62 bajty
0-indeksowane. Wygeneruj leniwie nieskończony zakres liczb niepalindromicznych za pomocą analizy list i weź
i
jeden. Zobacz online: https://ideone.com/54wXI3źródło
PowerShell v2 +, 65 bajtów
Pętle przechodzą przez liczby od
0
(wartość domyślna dla niezainicjowanego$i
), dopóki nie znajdziemy wejściowych$args[0]
wielu dopasowań, a następnie wyprowadza ostatnią. Zauważ, że nie inicjujemy pętli, więc$j=0
jest niejawna.Każdą iterację wstępnie zwiększamy
$i
i sprawdzamy, czy nie jest ona równa$i
odwrotności. Jeśli tak, oznacza to, że znaleźliśmy nie-palindrom, więc przyrost$j
. Pętla jest kontynuowana tyle razy, ile to konieczne.Przykłady
źródło
Python 2, 60 bajtów
Funkcja o jednym indeksie, która pobiera dane wejściowe
n
przez argument i zwracan
th liczbę niepalindromiczną.Jak to działa
Jest to wyczerpujące wyszukiwanie rekurencyjne, które kolejno testuje liczby całkowite
i
w zakresie,[1,∞)
dopókin
nie zostaną znalezione liczby niepalindromiczne; ponieważi
jest wstępnie zwiększany,i-1
jest następnie zwracany. Testowanie, czy liczba jest palindromiczna, jest przeprowadzane przez konwersję na ciąg znaków, odwracanie, a następnie sprawdzanie, czy ciągi oryginalne i odwrócone są równe.Kod jest logicznie równoważny z:
który sam w sobie jest zasadniczo:
Wypróbuj na Ideone
źródło
Clojure, 62 bajty
Zupełnie inne podejście niż druga odpowiedź, ale jednakowa długość.
źródło
R ,
1331179376 bajtów-16 bajtów dzięki JayCe. -41 bajtów dzięki Giuseppe.
Wypróbuj online!
źródło
F
itp .: TIO . Ponadto, dlaczego ograniczasz pętlę do(0:97)+10
?all(D==rev(D))
gdzieD
jest wektor cyfr. Wierzę, żewhile
pętla będzie krótsza i jak pyta @JayCe, dlaczego sprawdzasz tylko liczby od 10 do 107?while
pętlę, jednocześnie oszczędzając bajty.Dalej (gforth) ,
10399 bajtówWypróbuj online!
Wyjaśnienie
Pętla n razy, każda iteracja znajduje następną niepalindromiczną liczbę, zwiększając licznik o 1, aż liczba nie będzie równa się odwróceniu
Kod niepoznany
Normalnie nie „odhuliłbym” kodu, ale ponieważ ten kod jest nieco niechlujny, pomyślałem, że to pomoże
Objaśnienie kodu
źródło
Perl 6 , 29 bajtów
(używa indeksu 0)
Stosowanie:
źródło
Właściwie 17 bajtów
Wypróbuj online!
Wartości są indeksowane 1. To może być łatwo zmieniona na 0-indeksowane przez zastąpienie pierwszy
R
zr
. AleR
to jest to , co początkowo napisałem, więc o to mi chodzi.Liczby niepalindromiczne spełniają
a(n) ≈ n + 10
więc, więc2n+9
jest wystarczającą górną granicą.Wyjaśnienie:
źródło
JavaScript (ES6), 54 bajty
Wykorzystuje indeksowanie 1. Działa tylko do 7624. numeru.
Stosowanie
JavaScript (ES6), 59 bajtów
Nie używa rekurencji, więc może obsługiwać znacznie większe dane wejściowe.
Stosowanie
źródło
JavaScript (przy użyciu zewnętrznej biblioteki) (97 bajtów)
Link do lib: https://github.com/mvegh1/Enumerable
Objaśnienie kodu: Biblioteka ma metodę statyczną o nazwie Sekwencja, w której pierwszy parametr określa liczbę elementów, które sekwencja gwarantuje do utworzenia, a drugi parametr jest predykatem akceptującym bieżącą wartość iteracji „i”. Predykat konwertuje liczbę całkowitą na ciąg znaków, który jest konwertowany na tablicę char przez wywołanie _.From. Tablica char jest porównywana z odwróceniem tablicy char, a jeśli nie są one równe, tablica char jest ponownie łączona w łańcuch i zwracana. W przeciwnym razie nic nie jest zwracane (tzn. Wynik jest niezdefiniowany, co biblioteka zawsze będzie ignorować). Na koniec zwracany jest ostatni element sekwencji, tj. N-ty element
źródło
C, 84 bajtów
Funkcja
f(n)
przyjmuje liczbę całkowitąn
i zwracan-th
liczbę niepalindromiczną (na podstawie 1).Przetestuj na Ideone!
Jest to dość trywialny kod, więc prawdopodobnie jest miejsce na ulepszenia.
źródło
n=n?g(n/10,r*10+n%10):r;}s;f(n){for(s=9;n--;g(++s,0)-s||s++);n=s;
zamiastreturn n?g(n/10,r*10+n%10):r;}s;f(n){for(s=9;n--;g(++s,0)==s&&s++);return s;
Rubinowy, 54 bajty
Ta funkcja ma indeks 1 i jest częściowo oparta na odpowiedzi Javascript Dom Hastingsa . Wydaje mi się, że istnieje lepszy sposób na grę w golfa, zwłaszcza w przypadku tej ostatniej trójki. Ponadto ta funkcja obecnie zwraca ciąg, który może wymagać późniejszej edycji. Wszelkie sugestie dotyczące gry w golfa są mile widziane.
Nie golfowany:
źródło
C ++ (GCC), 148 bajtów
Jest oparty na 1, a algorytm jest naprawdę naiwny
źródło
#import
to rozszerzenie kompilatora gcc. Jest przestarzałe, ale nie ma to tak naprawdę znaczeniaAPL NARS 35 znaków
jest to funkcja v; „⍎⌽⍕” r przekształca liczbę w ciąg znaków, odwraca ten ciąg, przenosi z ciągu na ciąg. Funkcje testowe i pomocnicze:
źródło
Łuska , 6 bajtów
Tak dla
↔
:)Wypróbuj online!
Wyjaśnienie
źródło
Perl 5 , 33 + 1 (
-p
) = 34 bajtyWypróbuj online!
źródło
C # 7, 89 bajtów
1 zindeksowany Wypróbuj Repl.It
Nie sądzę, aby używało to żadnych funkcji językowych z c # 7, ale umieściłem je tam, ponieważ to właśnie przetestowałem
źródło
Japt ,
141211109 bajtów1-indeksowany
Spróbuj
źródło
Java 8,
1179594 bajtów0-indeksowane
Wyjaśnienie:
Wypróbuj tutaj.
źródło
new StringBuffer(int)
nie jest równenew StringBuffer(String)
, ani nie jestString.equals(StringBuffer)
zamiastString.equals(String)
.. To jest stara odpowiedź, więc mogę użyć,(++r+"").contains(new StringBuffer(r+"").reverse())
aby zapisać 1 bajt.TCC, 11 bajtów
Wypróbuj online!
źródło
tcc.lua
plikiem ze znacznikiem czasu 16-07-26 12:46 UTC, który nie miał?>
polecenia. Jeśli twoja odpowiedź wymaga wersji językowej, która opublikowała wyzwanie, musisz oznaczyć ją w nagłówku jako niekonkurującą . Kiedy to zrobię, usunę moją opinię.