/* 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
. Jeśli podwoisz to, twoje źródło to `` (pusty program) i to również produkuje5
, bez względu na to, co robisz. To powiedziawszy, zduplikowany pusty program jest nadal pustym programem i zawsze generuje to samo wyjście, z wyjątkiem przypadku, gdy pusty program oznacza coś innego (na przykład generator liczb losowych), co i tak nie może być poprawne.Odpowiedzi:
Python 2 , 33 bajty
Wypróbuj online!
Spróbuj dwukrotnie
Python 3 , 28 bajtów
Wypróbuj online!
Spróbuj dwukrotnie
Wyjaśnienie
Spowoduje to otwarcie kodu źródłowego
open(__file__)
i uzyskanie jego długości zalen
pomocą#
zapobiega odczytaniu dodatkowego kodu. Kiedy źródło jest podwojone, zwiększa się również długość.źródło
tell()
zwraca bieżącą pozycję w plikuGalaretka , 1 bajt
Wypróbuj online!
lub Wypróbuj dwukrotnie!
Nie mam pojęcia, jak to działa, ale najwyraźniej tak.
źródło
Arkusze Google,
115 bajtówAnonimowa formuła arkusza roboczego, która nie pobiera danych wejściowych i wyjściowych do komórki zawierającej formułę
Jako pojedyncza formuła ocenia to stos wywołań, który wygląda trochę podobnie
Jednak gdy ta formuła arkusza roboczego zostanie podwojona, stos wywołań jest oceniany w dół do
Oczywiście implikacją użycia tej metody jest to, że gdy powtórzy się to więcej niż raz, przy trzeciej i wszystkich kolejnych iteracjach problemu, stos wywołań osiągnie,
=4/(2=4)
a tym samym oszacuje=4/0
i wyrzuci#DIV/0!
błąd-6 bajtów, przechodząc do algebry od
=DIVIDE(4,2
formułyźródło
)
odpowiedź, ta odpowiedź jest jedyną odpowiedzią w Arkuszach Google, którą widziałem i która nie przekłada się na odpowiedź Excela05AB1E , 2 bajty
Oryginał
Wypróbuj online!
Podwojony
Wypróbuj online!
Wyjaśnienie
X przesuwa 1 na stos.
O sumuje stos.
źródło
1O
!C (gcc), 37 bajtów
Plik nie zawiera końcowego nowego wiersza.
Wersja podwójna do podświetlania składni:
Linki TIO: pojedyncze , podwójne .
źródło
/*
komentarz jest oznaczony jako//
, co oznacza, że następującei=1
komentarze nie są komentowane . Łatwiej to zobaczyć, jeśli umieścisz podwójną wersję kodu w wyróżniaczu składniSześciokąt , 7 bajtów
Drukuje 1 regularnie, a następnie 2 dwukrotnie.
Wypróbuj online! lub Wypróbuj podwojony online!
Rozszerzone wersje:
Regularny:
Podwojony:
Zwykły program podąża ścieżką:
/)!.@
która zwiększa krawędź pamięci (wszystkie są inicjowane do zera), a następnie wypisuje jej wartość liczbową. Następuje podwojony program:/.)/)!@
zamiast tego dwukrotnie zwiększa krawędź przed drukowaniem.źródło
[@!)
(i jakieś 570 rozwiązań 5-bajtowych). Ponieważ faktycznie zadałeś sobie trud znalezienia rozwiązania ręcznie, cieszę się, że opublikowałeś 4-bajtowe rozwiązanie.Python 2 , 21 bajtów
Wypróbuj online!
Podwojony:
Wypróbuj online!
źródło
Braingolf , 1 bajt
Wypróbuj online!
Teraz rozmawiamy!
Wyjścia
20
lub40
gdy źródło jest podwojone.Wyjaśnienie
+
jest oczywiście operatorem „sumy”, „dodania” lub „plus” w Braingolfie, jednak ma on funkcje dyadyczne, monadyczne i niladyczne.Gdy na stosie znajdują się co najmniej 2 przedmioty, jest to diadem i sumuje 2 górne elementy stosu.
Gdy na stosie znajduje się tylko 1 przedmiot, jest monadyczny i podwaja przedmiot.
Kiedy na stosie nie ma żadnych przedmiotów, jest niladyczny i wypycha 20!
Dlaczego popycha 20? Cóż, ponieważ pusty program Braingolfa po prostu drukuje nową linię, a wartość ASCII nowej linii wynosi 10, więc pomyślałem, że wykonam niladic
+
push 20, więc to tak, jakby faktycznie było monadyczne na ukrytej nowej linii (nawet jeśli nie ma wszystko)W związku z tym:
A kiedy się podwoi:
źródło
Haskell ,
2618 bajtówWypróbuj online!
Podwojony:
Wypróbuj online!
Znalazłem tę wersję, odpowiadając na potrójną wersję wyzwania .
Wersja 26-bajtowa bez nadużywania komentarzy:
Wypróbuj online! Wydruki
1
.W straży wzorów identyfikator
n
jest ustawiany na1
inmain
do2
, a następnieprint n
drukowany1
.Podwójny program:
Wypróbuj online! Wydruki
2
.W pierwszej straży wzór ponownie
n
ustawiony jest1
inmain
do2
jednak oświadczenie print stałoprint nmain
, więc2
jest drukowana. Ponieważ deklaracje identyfikatora w strażniku wzorców mają wartość true, nigdy nie można osiągnąć drugiego strażnika wzorców.źródło
Mathematica, 5 bajtów
wyjścia 2 i (1 + 1) (1 + 1) wyjścia 4
i oczywiście (jak wielu z was pytało)
Mathematica, 3 bajty
źródło
(2)
działa2
i spacja działałyby tak samo,+1
ale należy zauważyć, że wszystkie z nich zakładają środowisko notebooków Mathematikix
, która2
wyświetli się2
i2 2
będzie2x2
drukować 4. Możesz to dodać jako alternatywne rozwiązanie.(2)
działa również.2
działa również.Brain-Flak , 6 bajtów
Wypróbuj online!
Wyjaśnienie
To, co to robi, powinno być całkiem jasne.
{}
pobiera wartość ze stosu, która na początku domyślnie zero,()
dodaje do niej jedną i(...)
wypycha wartość. Przy drugim uruchomieniu, ponieważ na stosie jest już 1, dodaje to tylko 1, aby otrzymać dwa. W rzeczywistości, jeśli skopiujeszn
czasy kodu , zawsze będzie ono generowanen
.źródło
> <> ,
76 bajtów-1 bajt dzięki pelikanowi Teal
Wypróbuj online!
Spróbuj dwukrotnie!
Wyjaśnienie
Użyłem a,
0
ale mogłem również użyć1
-9
,a
-f
ponieważ wszystkie wypychają jedną wartość na stos.Nie podwojony:
Podwojony:
źródło
Siatkówka , 3 bajty
Wypróbuj online!
Wydruki
2
. Podwajanie to drukuje4
.1
Można zastąpić prawie cokolwiek innego.Wyjaśnienie
Zamienia puste wejście na
1
.Liczy liczbę pustych dopasowań, w
1
których są dwa (jeden przed1
i jeden po nim).Jeśli podwoimy program, otrzymamy dodatkowy etap, taki jak pierwszy. Tym razem wstawia
1
przed i po pierwszym, dając111
. Kiedy teraz policzymy liczbę dopasowań pustego wyrażenia regularnego, otrzymujemy cztery z nich.źródło
Python REPL, 2 bajty
Działa również w Pip, Dyalog APL, JavaScript, J i R.
Teraz tworzę TIO.Nie mogłem zmusić replikacji Pythona do pracy na TIOźródło
+1
jest dokładnie tym, co zrobię: P, ale cholera, ty ninja mnie o około minutę> <Neim , 1 bajt
Po prostu zwiększa górę stosu.
Stos można wyobrazić sobie jako nieskończoną liczbę zer na początek, więc to zwiększa zero, aby uzyskać jeden, a podwojone, zwiększa je ponownie, aby uzyskać dwa.
Wypróbuj online!
Alternatywne rozwiązanie:
Dodaje 2 zamiast 1.
źródło
JavaScript, 38 bajtów
źródło
i++
?Java8,
135118110 bajtówPojedyncze , wydruki 8
Dwukrotnie , drukuje 16
Podgląd odpowiedzi, 118 bajtów
Pojedyncze , wydruki 1
Dwukrotnie , odciski 2
Jak to działa
Kompilator Java tworzy jeden plik dla każdej klasy w pliku źródłowym. Dlatego mogę po prostu sprawdzić, czy istnieje zasób o nazwie B.class.
Oryginalna odpowiedź, 135 bajtów
Pojedyncze , wydruki 1
Dwukrotnie , odciski 2
źródło
Python 2 , 32 bajty
Wypróbuj online!
Podwójny kod źródłowy
Wyjaśnienie
Spowoduje to otwarcie pliku kodu źródłowego w trybie dołączania
Następnie znajdujemy bieżącą pozycję w pliku, która będzie na końcu pliku z powodu otwarcia w trybie dołączania
Drukujemy tę długość
I dodaj komentarz, aby podwojenie kodu źródłowego nie spowodowało wykonania więcej kodu
źródło
Excel VBA, 12 bajtów
Anonimowa funkcja bezpośredniego okna VBE, która pobiera dane wejściowe i wyjściowe do zakresu
[A1]
. Domyślna wartość zakresu[A1]
to""
(pusty ciąg), a po jednym wykonaniu następujące ustawienie ustawia to1
i zwiększa1
o wszystkie kolejne wykonania.Wejście wyjście
Jedna wersja
Wersja podwójna
źródło
Japt , 1 bajt
Wypróbuj online!
Spróbuj dwukrotnie!
Powtarza się jeszcze dłużej!
Raczej prosty. Japt transpiluje do JS i
Ä
transpiluje do+ 1
, więcÄÄ
transpiluje do+ 1 + 1
, i tak dalej.źródło
É
- na szczęście najpierw zeskanowałem odpowiedzi.Łuska , 3 bajty
Wypróbuj online!
Oryginalny pomysł na to, co widziałem w innych odpowiedziach.
Wyjaśnienie
|
in Husk jest operatorem „lub”, który zwraca drugi argument, jeśli jest wierny, w przeciwnym razie pierwszy argument. Po zastosowaniu do argumentów różnych typów najpierw przekształca je wszystkie w liczby: transformacja ciągów (i ogólnie list) odbywa się poprzez obliczenie ich długości.W oryginalnym programie stosujemy
|
do 1 i pustego ciągu, który jest konwertowany na 0: wynik to 1.W programie podwójnym stosujemy
|
do 1 i łańcucha „| 1”, który jest konwertowany na 2: wynik to 2.źródło
Braingolf, 1 bajt
Wypróbuj online!
Spróbuj dwukrotnie!
Nie wiem, jak to działa, najważniejsze, że działa!
źródło
CJam, 3 bajty
Wypróbuj online
Hermetyzuj 5 w tablicy. Zwraca długość tablicy. Kiedy powielasz kod, poprzednio zwrócona długość 1 jest już na stosie, więc otrzymujesz tablicę [1,5], która zwraca długość 2.
źródło
Rubin, 16 bajtów
Wypróbuj online!
Podwojony:
Wypróbuj online! Wypróbuj online!
źródło
Wumpus , 4 bajty
Wypróbuj online!
Wypróbuj online!
Drukuje się normalny kod
32
i drukowany jest podwójny64
.Wyjaśnienie
"
działa tak jak w wielu innych fungeoidach: przełącza tryb łańcuchowy, w którym każdy kod znaku jest wypychany na stos, zamiast wykonywania polecenia. Jednak, w przeciwieństwie do większości innych fungeoidów, pole gry Wumpusa nie zawija się, więc IP zamiast tego odbija się od końca i odbija w przód iw tył przez kod.W przypadku pojedynczego programu wykonywany jest następujący kod:
Sznurek popycha
32, 79, 64, 79, 32
. Następnie przestrzeń nic nie robi,O
drukuje32
i@
kończy działanie programu.W przypadku programu podwójnego łańcuch zostaje zamiast tego zakończony, zanim adres IP zostanie odesłany, więc kod jest przetwarzany tylko raz:
Tym razem ciąg popycha
32, 79, 64
,O
drukuje64
i@
kończy działanie programu.To wydaje się być jedynym 4-bajtowym rozwiązaniem.
źródło
,,, 2 bajty
Wyjaśnienie
źródło
∑
wyskakują wszystkie elementy na stosie.Partia, 13 bajtów
Objaśnienie:
%~z0
rozwija się do długości pliku źródłowego, więc podwojenie pliku po prostu podwaja długość. Drugi wiersz określa pustą etykietę, która nic nie robi. Gdy plik jest podwojony, staje się etykietą o nazwie@echo %~z0
zamiast tego, a trzeci wiersz to kolejna pusta etykieta.źródło
QBasic,
4428 bajtówNa końcu nie ma nowego wiersza. Wyjścia są
4
pojedyncze,8
gdy podwójne.Wyjaśnienie
W przypadku pojedynczej wersji:
4
jest numerem linii.READ x,y
pobiera dwie pierwsze wartości zDATA
instrukcji i przechowuje je wx
orazy
. W ten sposóbx
dostaje się4
iy
dostaje0
.?x+y
dodaje dwie liczby i drukuje je.END
wychodzi z programu.W wersji podwójnej
DATA
staje się instrukcjąDATA 4,04
, która przypisuje4
do obux
iy
tym samym czyni jex+y
równymi8
.źródło
Befunge-98 , 5 bajtów
Wypróbuj online!
g
pobiera wartość znaku o współrzędnych (9, 0) w Funge-Space;.
wypisuje go jako liczbę całkowitą i@
zatrzymuje program. W wersji podwójnej (9, 0) jest poza zakresem programu, a Funge-Space poza programem jest inicjalizowany do domyślnej wartości spacji, więc wypisujemy 32. W wersji podwójnej (9, 0) jest@
znakiem, więc wypisujemy 64.źródło
Perl 5 , 7 bajtów
Z
-M5.10.0
Wypróbuj online!
Podwojony :
-2 dzięki Ton Hospel
źródło
say
aby zyskać 2 bajty więcej (The-M5.10.0
lub-E
zamiast-e
jest bezpłatny)