/* Configuration */
var QUESTION_ID = 132558; // 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 = 8349457; // 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 = '<i>' + lang + '</i>';
lang = jQuery(lang).text().toLowerCase();
languages[lang] = languages[lang] || {lang: a.language, user: a.user, size: a.size, link: a.link, uniq: lang};
});
var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);
langs.sort(function (a, b) {
if (a.uniq > b.uniq) return 1;
if (a.uniq < b.uniq) 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/Sites/codegolf/all.css?v=617d0685f6f3">
<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><a href="{{LINK}}">{{SIZE}}</a></td></tr>
</tbody>
</table>
<table style="display: none">
<tbody id="language-template">
<tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td><a href="{{LINK}}">{{SIZE}}</a></td></tr>
</tbody>
</table>
5
. Wenn Sie es verdoppeln, ist Ihre Quelle `` (leeres Programm) und das produziert5
auch, egal was Sie tun. Abgesehen davon ist ein dupliziertes leeres Programm immer noch das leere Programm und erzeugt immer die gleiche Ausgabe, außer für den Fall, dass das leere Programm etwas anderes bedeutet (z. B. einen Zufallszahlengenerator), das ohnehin nicht gültig sein könnte.Antworten:
Python 2 , 33 Bytes
Probieren Sie es online!
Probieren Sie es doppelt aus
Python 3 , 28 Bytes
Probieren Sie es online!
Probieren Sie es doppelt aus
Erläuterung
Dies öffnet den Quellcode mit bis
open(__file__)
und erhält seine Länge mitlen
dem#
verhindert , dass zusätzlichem Code gelesen werden. Wenn die Quelle verdoppelt wird, wird auch die Länge verdoppelt.quelle
tell()
Gelee , 1 Byte
Probieren Sie es online!
oder Probieren Sie es doppelt aus!
Ich habe keine Ahnung, wie das funktioniert, aber anscheinend schon.
quelle
Google Sheets,
115 BytesAnonyme Arbeitsblattformel, die keine Eingaben und Ausgaben in die Zelle übernimmt, in der sich die Formel befindet
Als einzelne Formel ergibt dies einen Aufrufstapel, der ungefähr so aussieht
Wenn diese Arbeitsblattformel jedoch verdoppelt wird, wird dieser Aufrufstapel bis auf ausgewertet
Die Verwendung dieser Methode impliziert natürlich, dass, wenn dies mehr als einmal wiederholt wird, der Aufrufstapel bei der dritten und allen folgenden Iterationen des Problems einen Fehler erreicht
=4/(2=4)
und somit auswertet=4/0
und auslöst#DIV/0!
-6 Bytes durch Umschalten auf Algebra außerhalb der
=DIVIDE(4,2
Formelquelle
)
, diese Antwort die einzige Google Sheets-Antwort ist, die ich gesehen habe und die sich nicht in eine Excel-Antwort umsetzt05AB1E , 2 Bytes
Original
Probieren Sie es online!
Verdoppelt
Probieren Sie es online!
Erläuterung
X drückt 1 zum Stapel.
O summiert den Stapel.
quelle
1O
!C (gcc), 37 Bytes
Die Datei enthält keine nachgestellte Newline.
Doppelte Version, zur Hervorhebung der Syntax:
TIO-Verbindungen: einfach , doppelt .
quelle
/*
wird das durch das auskommentiert//
, was bedeutet, dass das Folgende nicht kommentierti=1
ist. Dies ist einfacher zu erkennen, wenn Sie die doppelte Version des Codes in einen Syntax-Hexagony , 7 Bytes
Drucke 1 regelmäßig, dann 2 verdoppelt.
Probieren Sie es online! oder Online verdoppelt!
Erweiterte Versionen:
Regulär:
Verdoppelt:
Das reguläre Programm folgt dem Pfad: Es
/)!.@
inkrementiert eine Speicherflanke (alle werden auf Null initialisiert) und gibt dann ihren numerischen Wert aus. Es folgt/.)/)!@
das doppelte Programm: Stattdessen wird die Kante vor dem Drucken zweimal erhöht.quelle
[@!)
(und einige 570 5-Byte-Lösungen). Da Sie sich tatsächlich die Mühe gemacht haben, eine Lösung von Hand zu finden, freue ich mich, dass Sie die 4-Byte-Lösung veröffentlichen.Python 2 , 21 Bytes
Probieren Sie es online!
Verdoppelt:
Probieren Sie es online!
quelle
Braingolf , 1 Byte
Probieren Sie es online!
Jetzt reden wir!
Ausgänge
20
oder40
wenn die Quelle verdoppelt wird.Erläuterung
+
ist natürlich der "Summe" -, "Add" - oder "Plus" -Operator in Braingolf, hat jedoch dyadische, monadische und niladische Funktionen.Wenn sich mindestens 2 Gegenstände auf dem Stapel befinden, ist es dyadisch und summiert die obersten 2 Gegenstände des Stapels.
Wenn sich nur 1 Gegenstand auf dem Stapel befindet, ist er monadisch und verdoppelt den Gegenstand.
Wenn sich keine Gegenstände auf dem Stapel befinden, ist er gleich Null und drückt 20!
Warum drückt es 20? Nun, weil ein leeres Braingolf-Programm einfach eine neue Zeile ausgibt und der ASCII-Wert einer neuen Zeile 10 ist, dachte ich, ich würde niladic
+
push 20 machen , also ist es so, als wäre es tatsächlich monadisch auf der impliziten neuen Zeile (obwohl es nicht bei ist) alle)Deshalb:
Und wenn verdoppelt:
quelle
Haskell ,
2618 BytesProbieren Sie es online!
Verdoppelt:
Probieren Sie es online!
Ich habe diese Version gefunden, als ich auf die dreifache Version der Challenge geantwortet habe .
26-Byte-Version ohne Missbrauch von Kommentaren:
Probieren Sie es online! Druckt
1
.Im Musterschutz wird die Kennung
n
auf1
undnmain
auf gesetzt und2
dannprint n
gedruckt1
.Doppelprogramm:
Probieren Sie es online! Druckt
2
.Im ersten Muster ist guard wieder
n
auf1
undnmain
auf gesetzt2
, jedoch wurde die print-Anweisungprint nmain
so2
gedruckt. Da Bezeichnerdeklarationen in einem Pattern Guard als wahr ausgewertet werden, kann der zweite Pattern Guard niemals erreicht werden.quelle
Mathematica, 5 Bytes
Ausgänge 2 und (1 + 1) (1 + 1) Ausgänge 4
und natürlich (wie viele von euch gefragt haben)
Mathematica, 3 Bytes
quelle
(2)
zu arbeiten?2
und ein Leerzeichen würden funktionieren,+1
aber es sollte beachtet werden, dass alle diese Mathematica Notebook-Umgebung annehmenx
, so dass2
Ausgaben2
und2 2
wird2x2
den Druck 4. Sie , dass als alternative Lösung hinzufügen.(2)
funktioniert auch.2
funktioniert auch.Brain-Flak , 6 Bytes
Probieren Sie es online!
Erläuterung
Was dies tut, sollte ziemlich klar sein.
{}
greift nach einem Wert aus dem Stapel, der anfangs implizit null ist,()
addiert eins dazu und verschiebt(...)
den Wert. Beim zweiten Durchgang, da bereits eine 1 auf dem Stapel vorhanden ist, wird nur eine weitere 1 hinzugefügt, um zwei zu erhalten. In der Tat, wenn Sie den Coden
mal kopieren , wird es immer ausgegebenn
.quelle
> <> ,
76 Bytes-1 Byte dank Teal Pelican
Probieren Sie es online!
Probieren Sie es doppelt aus!
Erläuterung
Ich habe a verwendet,
0
aber ich hätte auch1
-9
,a
- verwenden können ,f
weil alle einen einzelnen Wert auf den Stapel schieben.Nicht verdoppelt:
Verdoppelt:
quelle
Netzhaut , 3 Bytes
Probieren Sie es online!
Druckt
2
. Verdoppeln druckt4
.Der
1
kann durch so ziemlich alles andere ersetzt werden.Erläuterung
Ersetzt die leere Eingabe durch
1
.Zählt die Anzahl der leeren Übereinstimmungen, bei
1
denen es sich um zwei handelt (eine vor der1
und eine nach der).Wenn wir das Programm verdoppeln, erhalten wir eine zusätzliche Stufe wie die erste. Diesmal fügt es ein
1
vor und nach dem ersten ein und gibt111
. Wenn wir nun die Anzahl der Übereinstimmungen des leeren Regex zählen, erhalten wir vier davon.quelle
Python REPL, 2 Bytes
Funktioniert auch in Pip, Dyalog APL, JavaScript, J und R
Ich mache gerade ein TIO.Ich konnte Python Repl nicht für TIO verwendenquelle
+1
ist genau das, was ich tun werde: P aber verdammt, du hast mich um ungefähr eine MinuteNeim , 1 Byte
Erhöht einfach die Oberseite des Stapels.
Man kann sich den Stapel als eine unendliche Anzahl von Nullen vorstellen, um anzufangen, also erhöht sich dieser Wert um null, um eins zu werden, und verdoppelt sich, erhöht sich erneut, um zwei zu erhalten.
Probieren Sie es online!
Eine alternative Lösung:
Addiert 2 anstelle von 1.
quelle
JavaScript, 38 Bytes
quelle
i++
?Java8,
135118110 BytesSingle , druckt 8
Verdoppelt , druckt 16
Vorschau-Antwort, 118 Bytes
Single , druckt 1
Verdoppelt , druckt 2
Wie das geht
Der Java-Compiler erstellt für jede Klasse in der Quelldatei eine einzelne Datei. Daher kann ich einfach überprüfen, ob eine Ressource mit dem Namen B.class vorhanden ist.
Ursprüngliche Antwort, 135 Bytes
Single , druckt 1
Verdoppelt , druckt 2
quelle
Python 2 , 32 Bytes
Probieren Sie es online!
Doppelter Quellcode
Erläuterung
Dadurch wird die Quellcodedatei im Anhänge-Modus geöffnet
Wir finden dann die aktuelle Position in der Datei, diese befindet sich am Ende der Datei, da sie im Anhänge-Modus geöffnet wird
Wir drucken diese Länge
Und fügen Sie einen Kommentar hinzu, damit das Verdoppeln des Quellcodes keinen weiteren Code ausführt
quelle
Excel VBA, 12 Bytes
Anonyme VBE-Direktfensterfunktion, die Eingaben von und Ausgaben in den Bereich übernimmt
[A1]
. Der Standardwert des Bereichs[A1]
ist""
(leere Zeichenfolge). Nach einer Ausführung wird dieser Wert auf gesetzt1
und1
bei allen nachfolgenden Ausführungen um inkrementiert .Input-Output
Single Version
Doppelte Version
quelle
Japt , 1 Byte
Probieren Sie es online!
Probieren Sie es doppelt aus!
Wiederholt sich auch noch länger!
Ziemlich einfach. Japt transpiles zu JS und
Ä
transpiles zu+ 1
, soÄÄ
transpiles zu+ 1 + 1
und so weiter.quelle
É
- zum Glück habe ich zuerst die Antworten gescannt.Schale , 3 Bytes
Probieren Sie es online!
Eine originelle Idee für das, was ich in anderen Antworten gesehen habe.
Erläuterung
|
in Husk ist ein "oder" -Operator, der sein zweites Argument zurückgibt, wenn es wahr ist, andernfalls das erste Argument. Bei Anwendung auf Argumente unterschiedlichen Typs werden zunächst alle in Zahlen umgewandelt. Die Umwandlung für Zeichenfolgen (und Listen im Allgemeinen) erfolgt durch Berechnung ihrer Länge.Im ursprünglichen Programm wenden wir
|
1 und eine leere Zeichenfolge an, die in 0 konvertiert wird: Das Ergebnis ist 1.Im doppelten Programm wird
|
1 und der String "| 1" verwendet, der in 2 konvertiert wird. Das Ergebnis ist 2.quelle
Braingolf, 1 Byte
Probieren Sie es online!
Probieren Sie es doppelt aus!
Ich weiß nicht, wie das funktioniert, das Wichtigste ist, dass es funktioniert!
quelle
CJam, 3 Bytes
Probieren Sie es online
Verkapseln Sie 5 in einem Array. Länge des Arrays zurückgeben. Wenn Sie Code duplizieren, befindet sich die zuvor zurückgegebene Länge 1 bereits auf dem Stapel, sodass Sie ein Array von [1,5] erhalten, das die Länge 2 zurückgibt.
quelle
Ruby, 16 Bytes
Probieren Sie es online!
Verdoppelt:
Probieren Sie es online aus! Probieren Sie es online aus!
quelle
Wumpus , 4 Bytes
Probieren Sie es online!
Probieren Sie es online!
Der normale
32
und der doppelte Code werden gedruckt64
.Erläuterung
"
Funktioniert wie in vielen anderen Fungeoids: Schaltet den Zeichenkettenmodus um, in dem jeder einzelne Zeichencode auf den Stapel geschrieben wird, anstatt den Befehl auszuführen. Im Gegensatz zu den meisten anderen Fungeoids wird das Spielfeld von Wumpus jedoch nicht umbrochen, sodass die IP-Adresse stattdessen vom Ende reflektiert wird und durch den Code hin und her springt.Für das einzelne Programm wird also tatsächlich der folgende Code ausgeführt:
Die Saite drückt
32, 79, 64, 79, 32
. Dann macht der Space nichts,O
druckt32
und@
beendet das Programm.Für das verdoppelte Programm wird die Zeichenfolge stattdessen beendet, bevor die IP zurückspringt, sodass der Code nur einmal durchlaufen wird:
Diesmal drückt der String
32, 79, 64
,O
druckt das64
und@
beendet das Programm.Dies scheint die einzige 4-Byte-Lösung zu sein.
quelle
,,,, 2 bytes
Erläuterung
quelle
∑
alle Elemente auf dem Stapel angezeigt werden .Batch, 13 Bytes
Erläuterung:
%~z0
Wird auf die Länge der Quelldatei erweitert, sodass durch das Verdoppeln der Datei einfach die Länge verdoppelt wird. Die zweite Zeile definiert ein leeres Etikett, das nichts tut. Wenn die Datei verdoppelt wird, wird sie@echo %~z0
stattdessen zu einer Bezeichnung , während die dritte Zeile eine weitere leere Bezeichnung ist.quelle
QBasic,
4428 BytesAm Ende steht kein Zeilenumbruch. Ausgänge,
4
wenn sie einzeln oder8
verdoppelt sind.Erläuterung
Für die Single-Version:
4
ist eine Zeilennummer.READ x,y
Nimmt die ersten beiden Werte aus derDATA
Anweisung und speichert sie inx
undy
. Sox
wird4
undy
wird0
.?x+y
addiert die beiden Zahlen und druckt sie aus.END
Beendet das Programm.In der doppelten Fassung wird die
DATA
AnweisungDATA 4,04
, die4
beiden zuweistx
undy
somit stattdessenx+y
gleich macht8
.quelle
Befunge-98 , 5 Bytes
Probieren Sie es online!
g
Ruft den Zeichenwert an der Koordinate (9, 0) im Funge-Space ab..
Gibt es als Ganzzahl aus und@
hält das Programm an. In der unverdoppelten Version ist (9, 0) außerhalb der Programmgrenzen, und der Funge-Space außerhalb des Programms wird auf den Standardwert eines Leerzeichens initialisiert, sodass wir 32 ausgeben. In der verdoppelten Version ist (9, 0) 0) ist das@
Zeichen, also drucken wir 64.quelle
Perl 5 , 7 Bytes
Mit
-M5.10.0
Probieren Sie es online!
Verdoppelt :
-2 danke an Ton Hospel
quelle
say
, um 2 weitere Bytes zu erhalten (Das-M5.10.0
oder-E
anstelle von-e
ist kostenlos)