/* 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>
Antworten:
Attache , 4 Bytes
Probieren Sie es online aus! (Wenn die Eingabe eine Liste von Zeichen sein
&/S
könnte , könnte funktionieren.)Alternativen
5 Bytes:
`@&-1
8 Bytes:
&/S@List
10 Bytes:
`@«_,-1»
10 Bytes:
Fold!Right
10 Bytes:
`@<~_,-1~>
10 Bytes:
`^^&:Right
10 Bytes:
{Right^^_}
11 Bytes:
Get«_,-1»
11 Bytes:
Get<~_,-1~>
12 Bytes:
`@«_,#_-1»
12 Bytes:
`@<~_,#_-1~>
13 Bytes:
Get«_,#_-1»
13 Bytes:
Get<~_,#_-1~>
quelle
Last
eingegebene Byte. Die Programminhalte passen zur Herausforderungx86-16 Maschinencode, 2 Bytes
Wie @CodyGray richtig hervorhebt, wird durch die Eingabe als Zeichenfolge und Ausgabe in ein Register der Großteil der eigenständigen Programmversion entfernt.
Die Eingabezeichenfolge ist in
SI
, die Länge inCX
und das Ausgabezeichen ist inAL
:Oder 4 Bytes als "Pascal-Zeichenfolge" (Länge wird dem Anfang der Zeichenfolge vorangestellt):
Oder 5 Bytes als "C-String" (null / null terminiert), Eingabe in
DI
:x86-16 Maschinencode, IBM PC DOS,
121110 BytesOder so komplettes Programm wie die ausführbare Datei von IBM PC DOS. Die Eingabe erfolgt über die Befehlszeile, die Ausgabe erfolgt über die Konsole.
Ausgabe:
quelle
SI
, Länge inCX
Ausgabezeichen ist inAL
" und dann denke ich, dass der einzige Code, der notwendig wäre,REPZ LODSB
(2 Bytes) und wir wären fertig. Natürlich wäre dieser Ansatz nicht so, wie Sie es tun würden, wenn Sie für Effizienz und nicht für Größe programmieren würden. Ihr Punkt ist jedoch sehr gut aufgenommen, ich werde ihn auch als eine Funktion veröffentlichen, die das Fleisch der Arbeit erledigt.Brainf ***, 7 Bytes
quelle
-1
als EOF zu verwenden.+[>,+]<-.
sollte funktionierenMATL, 2 Bytes
MATL verwendet eine 1-basierte modulare Indizierung, sodass diese Lösung das Element an der
0
-ten Position der Eingabe erfasst, die mit der letzten Position seit dem0
Umbruch bis zum Ende identisch ist .Probieren Sie es bei MATL Online aus
Erläuterung
quelle
J)
...PHP , 13 Bytes
Probieren Sie es online aus!
Mit
php -nF
Eingabe ausführen ist STDIN. Beispiel:quelle
Javascript, 14 Bytes
quelle
[0]
. Oder vielleicht, wenn es einen kurzen Weg gibt, um die Array-Länge zu ermitteln.a=>[...a].pop()
Anderer Ansatz: (15 Bytes)Python 3 , 14 Bytes
Probieren Sie es online aus!
quelle
e
in der Kopfzeile das Lambda zuweise ). Für Ihre zweite Frage ist der Headere=\
, was im Grunde bedeutete=lambda x:x[-1]
e=\
, Markdown jedoch dem Codezeichen entgeht, sodass ich ein abschließendes Leerzeichen hinzufügen mussBash + Coreutils, 8 Bytes
Die Eingabe erfolgt von stdin, die Ausgabe von stdout.
quelle
TI-BASIC (TI-84), 10 Bytes
Ruft das letzte Zeichen in der Eingabezeichenfolge ab.
Eingabe ist in
Ans
.Die Ausgabe ist in
Ans
und wird automatisch ausgedruckt.quelle
Haskell ,
94 BytesProbieren Sie es online aus!
quelle
pure
? Ist das nichtlast
genugSeed , 11 Bytes
Probieren Sie es online aus!
Das daraus resultierende Befunge-98-Programm
~2j@,
wurde hier von Jo King ausgeliehengestohlen.quelle
Java 8
Eingabe von STDIN, 71 Bytes
Probieren Sie es online aus!
Funktionsargument, 25 Bytes
quelle
s->s[s.length-1]
hätte man mit einemchar[]
Parametertyp gereicht .> <> , 2 Bytes
Verwenden von Befehlszeilenargumenten
Probieren Sie es online aus!
> <> 11 Bytes
Mit stdin
Probieren Sie es online aus!
quelle
Cubix , 6 Bytes
Probieren Sie es online aus!
Schau es dir an
A
Übernimmt alle Eingaben/
Umleiten um den Würfelpp
Bringen Sie den Boden des Stapels zweimal nach obeno/@
Ausgabe als Zeichen, Weiterleiten und Anhaltenquelle
Befunge-93 , 12
15BytesProbieren Sie es online aus!
Vielen Dank an @Jo King für das Golfen von 3 Bytes.
Alternative 15-Byte-Version, die weniger chaotisch ist:
Es ist nicht einfach, Zeichenfolgen als Eingabe in Befunge zu verwenden. Wenn es einen einzigen Befehl gäbe, der mehrere Zeichen aufnehmen könnte, wäre dies so einfach wie das Lesen der Zeichenfolge, das Poppen / Drucken des obersten Zeichens und das Beenden.
quelle
$$
stattp1
ohne Vorwarnung für die gleiche Anzahl von Bytes funktionierenTuring Machine, aber viel schlimmer , 391 Bytes
Probieren Sie es online aus!
ERLÄUTERUNG
quelle
Gelee , 1 Byte
Probieren Sie es online aus!
Nicht die schwierigste Herausforderung in Jelly ...
Beachten Sie, dass dies die Eingabe als Zeichenfolge akzeptiert. Wenn die Eingabe anders interpretiert werden könnte (z. B. eine Zahl, eine Liste), muss das Argument in Anführungszeichen gesetzt werden (z. B. "123456" oder "[123,197]"). Alternativ kann dies als Link angesehen werden, der ein Byte-Array verwendet und das letzte Mitglied dieses Arrays gemäß den PPCG-Standardregeln zurückgibt.
Vielen Dank an @ MilkyWay90 und @ ბიმო für den Hinweis.
quelle
Excel, 10 Bytes
Ziemlich gleichbedeutend mit der VBA-Antwort von @ remoel:
quelle
Kaskade , 9 Bytes
Ziemlich zufrieden damit, da es nur 3 Bytes länger ist als mein Katzenprogramm
Erweitert
Dies durchläuft im Wesentlichen nur das Durchschieben von Eingabezeichen in den
a
Stapel, bis EOF erreicht ist. Anschließend wird das Element oben ima
Stapel mit ausgegeben.a
.Probieren Sie es online aus!
quelle
PowerShell, 11 Bytes
Probieren Sie es online aus!
quelle
SmileBASIC, 16 Bytes
quelle
05AB1E , 1 Byte
Probieren Sie es online aus!
θ
oder`
würde auch funktionieren.quelle
Zweig, 37 Bytes
Dies verwendet nur einen einfachen Ansatz "1 Zeichen vom Ende extrahieren und drucken".
Es war wirklich einfach zu machen und zu testen, aber es hat Spaß gemacht!
Um es zu verwenden, müssen Sie es in eine
.twig
Datei einfügen und importieren:Sie können es unter https://twigfiddle.com/aa19wd testen (Testfälle enthalten).
quelle
Bash, 13 Bytes
Zeichenfolge wird als Argument übergeben.
Probieren Sie es online aus!
quelle
Emotion , 5 Bytes
Erläuterung
Probieren Sie es online aus!
quelle
VBA (Excel),
1412 BytesVerwenden von Sofortfenster und Zelle
A1
als EingabeDanke @tsh
?[RIGHT(A1)]
oder?Right([A1],1)
quelle
1
optional?Python 3,
111834 BytesVerwendung über das Ausführen des Programms als Python-Skript in der Befehlszeile. Die Eingabe wird als letztes Argument für das Programm bereitgestellt.
Probieren Sie es online aus!
quelle
IBM / Lotus Notes-Formel, 11 Byte
Berechnete Feldformel, die ihre Eingabe aus einem bearbeitbaren Feld bezieht
i
quelle
Turing Machine Code,
7242 BytesNimmt eine Eingabe ohne leere Zellen (Leerzeichen) an. Dank ASCII-only für das Speichern von 30 Bytes.
Alte Version in 72 Bytes:
Probieren Sie es online aus .
quelle
0 * * r 1/1 * * l 2/1 _ _ l halt/2 * _ r 0
?C # 8.0 , 8 Bytes
Benötigt .NET Core 3.0, das sich in der Beta befindet. Dies stürzt derzeit die CLR aufgrund eines Fehlers ab. Sobald der Fehler behoben ist, wird dieser wie erwartet ausgeführt und erfüllt die Anforderungen an die Herausforderung.
s=>s[^1]
C # 8.0 , Läuft zum Zeitpunkt des Schreibens ohne Absturz, 22 Byte
s=>s.ToCharArray()[^1]
C # 8.0 , Vollprogramm, 78 Bytes
using C=System.Console;class A{static void Main(){C.Write(C.ReadLine()[^1]);}}
quelle
array[^n]
ist dasselbe wiearray[array.Length - n]