/* Configuration */
var QUESTION_ID = 181627; // 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 = 8478; // 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,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\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,
});
else console.log(body);
});
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;
lang = jQuery('<a>'+lang+'</a>').text();
languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang, 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_raw.toLowerCase() > b.lang_raw.toLowerCase()) return 1;
if (a.lang_raw.toLowerCase() < b.lang_raw.toLowerCase()) 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;
display: block !important;
}
#answer-list {
padding: 10px;
width: 290px;
float: left;
}
#language-list {
padding: 10px;
width: 500px;
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="https://cdn.sstatic.net/Sites/codegolf/all.css?v=ffb5d0584c5f">
<div id="language-list">
<h2>Shortest Solution 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>
<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>
<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>
Odpowiedzi:
Attache , 4 bajty
Wypróbuj online! (Jeśli wejście może być listą znaków,
&/S
może działać.)Alternatywy
5 bajtów:
`@&-1
8 bajtów:
&/S@List
10 bajtów:
`@«_,-1»
10 bajtów:
Fold!Right
10 bajtów:
`@<~_,-1~>
10 bajtów:
`^^&:Right
10 bajtów:
{Right^^_}
11 bajtów:
Get«_,-1»
11 bajtów:
Get<~_,-1~>
12 bajtów:
`@«_,#_-1»
12 bajtów:
`@<~_,#_-1~>
13 bajtów:
Get«_,#_-1»
13 bajtów:
Get<~_,#_-1~>
źródło
Last
wprowadzony bajt. Treść programów pasuje do wyzwaniakod maszynowy x86-16, 2 bajty
Jak słusznie wskazuje @CodyGray, przyjmowanie danych wejściowych jako ciągów i wysyłanie ich do rejestru usuwa większość samodzielnej wersji programu.
Łańcuch wejściowy jest w
SI
, długość w,CX
a znak wyjściowy wAL
:Lub 4 bajty jako „ciąg Pascala” (długość jest dodawana do początku łańcucha):
Lub 5 bajtów jako „ciąg C” (zakończony zerami / zerami), wprowadź
DI
:kod maszynowy x86-16, IBM PC DOS,
121110 bajtówLub tak kompletny program, jak program wykonywalny IBM PC DOS. Dane wejściowe pochodzą z wiersza poleceń, dane wyjściowe na konsolę.
Wynik:
źródło
SI
, długośćCX
wyjściowego znaku wyjściowego jest wAL
”, a potem myślę, że jedynym kodem, który byłby potrzebny, sąREPZ LODSB
(2 bajty) i to byśmy zrobili. Oczywiście to podejście nie byłoby takie, jak to robisz, jeśli kodujesz pod kątem wydajności, a nie rozmiaru. Twój punkt widzenia jest jednak bardzo dobrze przyjęty, opublikuję go również jako funkcję, która jest podstawą pracy.Brainf ***, 7 bajtów
źródło
-1
jako EOF.+[>,+]<-.
powinien działaćMATL, 2 bajty
MATL wykorzystuje modułowe indeksowanie oparte na 1, więc to rozwiązanie chwyta element w
0
-tej pozycji wejścia, która jest taka sama jak ostatnia od momentu0
zawinięcia do końca.Wypróbuj to w MATL Online
Wyjaśnienie
źródło
J)
PHP , 13 bajtów
Wypróbuj online!
Uruchom z
php -nF
wejściem to STDIN. Przykład:źródło
JavaScript, 14 bajtów
źródło
[0]
. A może, jeśli istnieje krótka droga do uzyskania długości tablicy. Inne podejście:a=>[...a].pop()
(15 bajtów)Python 3 , 14 bajtów
Wypróbuj online!
źródło
e
w nagłówku). Drugim pytaniem jest nagłóweke=\
, co w zasadzie oznaczae=lambda x:x[-1]
e=\
ale Markdown ucieka przed znakiem kodu, więc muszę dodać spację końcowąBash + coreutils, 8 bajtów
Dane wejściowe są od wejścia standardowego, dane wyjściowe do wejścia standardowego.
źródło
TI-BASIC (TI-84), 10 bajtów
Pobiera ostatni znak w ciągu wejściowym.
Wejście jest w
Ans
.Wyjście jest włączone
Ans
i jest automatycznie drukowane.źródło
Haskell ,
94 bajtyWypróbuj online!
źródło
pure
? Nielast
wystarczyZiarno , 11 bajtów
Wypróbuj online!
Powstały Program befunge-98
~2j@,
zostałskradzionyzapożyczone z Jo Kinga tutaj , więc kredyt im za to.źródło
Java 8
Dane wejściowe ze STDIN, 71 bajtów
Wypróbuj online!
Argument funkcji, 25 bajtów
źródło
s->s[s.length-1]
wystarczyłoby zchar[]
parametrem typu.> <> , 2 bajty
Korzystanie z argumentów wiersza poleceń
Wypróbuj online!
> <> , 11 bajtów
Używanie standardowego wejścia
Wypróbuj online!
źródło
Cubix , 6 bajtów
Wypróbuj online!
Zobacz, jak biegnie
A
Pobiera wszystkie dane wejściowe/
Przekieruj wokół kostkipp
dwukrotnie przenieś spód stosu na góręo/@
wyjście jako znak, przekierowanie i zatrzymanieźródło
Befunge-93 , 12
15bajtówWypróbuj online!
Dzięki @Jo King za grę w golfa z 3 bajtów.
Alternatywna 15-bajtowa wersja, która jest mniej chaotyczna:
Pobieranie ciągów jako danych wejściowych w Befunge nie jest najłatwiejsze. Gdyby istniało jedno polecenie do przyjęcia wielu znaków, byłoby to tak proste, jak odczytanie ciągu, wstawienie / wydrukowanie górnego znaku i wyjście.
źródło
$$
zamiastp1
działać bez ostrzeżenia dla tej samej ilości bajtówMaszyna Turinga, ale gorzej , 391 bajtów
Wypróbuj online!
WYJAŚNIENIE
źródło
Galaretka , 1 bajt
Wypróbuj online!
Nie najtrudniejsze wyzwanie w galaretce ...
Zauważ, że akceptuje to wejście jako ciąg; jeśli dane wejściowe mogłyby zostać zinterpretowane inaczej (np. liczba, lista), wówczas argument trzeba będzie zacytować (np. „123456” lub „[123, 197]”). Alternatywnie może to być postrzegane jako łącze, które pobiera tablicę bajtów i zwraca ostatniego członka tej tablicy, zgodnie ze standardowymi zasadami PPCG.
Dzięki @ MilkyWay90 i @ ბიმო za zwrócenie na to uwagi.
źródło
Excel, 10 bajtów
Prawie równoważne z odpowiedzią VBA @ remoel:
źródło
Kaskada , 9 bajtów
Całkiem zadowolony z tego, ponieważ jest tylko 3 bajty dłuższy niż mój program cat
Rozszerzony
Zasadniczo po prostu zapętla się przez wypychanie znaków wejściowych do
a
stosu aż do osiągnięcia EOF. Następnie wysyła element na górzea
stosu za pomocą.a
.Wypróbuj online!
źródło
PowerShell, 11 bajtów
Wypróbuj online!
źródło
SmileBASIC, 16 bajtów
źródło
05AB1E , 1 bajt
Wypróbuj online!
θ
lub`
też będzie działać.źródło
Gałązka, 37 bajtów
To po prostu wykorzystuje proste podejście „wyciągnij 1 znak z końca i wydrukuj”.
To było naprawdę łatwe do zrobienia i przetestowania, ale było zabawne!
Aby go użyć, musisz umieścić go w
.twig
pliku i zaimportować:Możesz to przetestować na https://twigfiddle.com/aa19wd (walizki w zestawie)
źródło
Bash, 13 bajtów
ciąg jest przekazywany jako argument.
Wypróbuj online!
źródło
Emocja , 5 bajtów
Wyjaśnienie
Wypróbuj online!
źródło
VBA (Excel),
1412 bajtówużywając Immediate Window i Cell
A1
jako danych wejściowychDzięki @tsh
?[RIGHT(A1)]
lub?Right([A1],1)
źródło
1
opcjonalny?Python 3,
111834 bajtówWykorzystanie poprzez uruchomienie programu jako skrypt Pythona w wierszu poleceń. Dane wejściowe są dostarczane jako ostatni argument programu.
Wypróbuj online!
źródło
Formuła IBM / Lotus Notes, 11 bajtów
Formuła pola obliczeniowego, pobierająca dane wejściowe z pola edytowalnego
i
źródło
Kod maszynowy Turinga,
7242 bajtyZakłada dane wejściowe bez pustych komórek (spacji). Dzięki ASCII tylko za oszczędność 30 bajtów.
Stara wersja w 72 bajtach:
Wypróbuj online .
źródło
0 * * r 1/1 * * l 2/1 _ _ l halt/2 * _ r 0
?C # 8.0 , 8 bajtów
Wymaga .NET Core 3.0, który jest w wersji beta. Obecnie powoduje to awarię CLR z powodu błędu, ale gdy błąd zostanie naprawiony, uruchomi się zgodnie z oczekiwaniami i spełni wymagania dotyczące wyzwania.
s=>s[^1]
C # 8.0 , Działa bez awarii w momencie pisania, 22 bajtów
s=>s.ToCharArray()[^1]
C # 8.0 , pełny program, 78 bajtów
using C=System.Console;class A{static void Main(){C.Write(C.ReadLine()[^1]);}}
źródło
array[^n]
Jest taki sam jakarray[array.Length - n]