/* 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
. Если вы удвоите его, ваш источник будет `` (пустая программа), и он также производит5
, независимо от того, что вы делаете. При этом дублированная пустая программа по-прежнему является пустой программой и всегда выдает один и тот же вывод, за исключением случая, когда пустая программа означает что-то другое (например, генератор случайных чисел), что в любом случае не может быть допустимым.Ответы:
Python 2 , 33 байта
Попробуйте онлайн!
Попробуй вдвое
Python 3 , 28 байт
Попробуйте онлайн!
Попробуй вдвое
объяснение
Это открывает исходный код с помощью
open(__file__)
и получает его длину сlen
помощью#
предотвращает чтение любого дополнительного кода. Когда источник удваивается, длина тоже.источник
tell()
возвращает текущую позицию в файлеЖеле , 1 байт
Попробуйте онлайн!
или попробуйте это дважды!
Я понятия не имею, как это работает, но, видимо, это так.
источник
Google Sheets,
115 байтФормула анонимного рабочего листа, которая не требует ввода и вывода в ячейку, которая содержит формулу
Как одна формула, это оценивает стек вызовов, который выглядит примерно так
Однако, когда эта формула рабочего листа удваивается, этот стек вызовов оценивается до
Конечно, следствием использования этого метода является то, что, как только он будет повторяться более одного раза, на третьей и всех последующих итерациях проблемы стек вызовов достигнет
=4/(2=4)
и, таким образом, оценит=4/0
и выдает#DIV/0!
ошибку.-6 байт, переключаясь на алгебру от
=DIVIDE(4,2
формулыисточник
)
, этот ответ является единственным ответом из Листов Google, который я видел, который не переводится в ответ Excel05AB1E , 2 байта
оригинал
Попробуйте онлайн!
двойной
Попробуйте онлайн!
объяснение
Х толкает 1 в стек.
O суммирует стек.
источник
1O
!C (gcc), 37 байт
Файл не содержит завершающий перевод строки.
Двойная версия, для подсветки синтаксиса:
TIO ссылки: одинарные , двойные .
источник
/*
он закомментируется символом//
, что означает следующее безi=1
комментариев. Это легче увидеть, если вы поместите удвоенную версию кода в подсветку синтаксисаГексагония , 7 байт
Печатает 1 регулярно, затем 2 в два раза.
Попробуйте онлайн! или попробуйте удвоить онлайн!
Расширенные версии:
Regular:
Вдвое:
Обычная программа следует по пути:
/)!.@
который увеличивает край памяти (все инициализируются нулями), а затем печатает его числовое значение. Далее следует дублированная программа,/.)/)!@
которая вместо этого увеличивает края дважды перед печатью.источник
[@!)
(и около 570 5-байтовых решений). Поскольку вы на самом деле столкнулись с проблемой поиска решения вручную, я очень рад, что вы опубликовали 4-байтовое решение.Python 2 , 21 байт
Попробуйте онлайн!
Вдвое:
Попробуйте онлайн!
источник
Braingolf , 1 байт
Попробуйте онлайн!
Теперь мы говорим!
Выходы
20
, или40
когда источник удваивается.объяснение
+
в Braingolf, конечно, операторы «sum», «add» или «plus», однако он имеет двоичные, монадические и ниладические функции.Когда в стеке есть как минимум 2 предмета, это двоично и суммирует 2 верхних предмета в стеке.
Когда в стеке только 1 предмет, он монадический и удваивает предмет.
Когда в стеке нет предметов, это ниладично, а толкает 20!
Почему это толкает 20? Ну, потому что пустая программа Braingolf просто печатает новую строку, а значение ASCII новой строки равно 10, поэтому я решил, что я сделаю niladic
+
push 20, так что это похоже на то, что он на самом деле является монадным на неявной новой строке (даже если это не все)Следовательно:
И когда удвоилось:
источник
Haskell ,
2618 байтовПопробуйте онлайн!
Вдвое:
Попробуйте онлайн!
Я нашел эту версию, отвечая на тройную версию испытания .
26-байтовая версия без комментариев:
Попробуйте онлайн! Печать
1
.В шаблоне охрана идентификатор
n
установлен в1
иnmain
к2
, затемprint n
гравюры1
.Двойная программа:
Попробуйте онлайн! Печать
2
.В первом шаблон охранник снова
n
установлен в1
иnmain
к2
, однако оператор печати сталиprint nmain
, поэтому2
печатается. Поскольку объявления идентификаторов в функции защиты шаблона оцениваются как true, вторая защита шаблона не может быть достигнута.источник
Mathematica, 5 байтов
выходы 2 и (1 + 1) (1 + 1) выходы 4
и конечно (как многие из вас спрашивали)
Mathematica, 3 байта
источник
(2)
?2
и пробел будут работать, как+1
и должно быть, но следует отметить, что все они предполагают среду ноутбука Mathematicax
, таким образом, что2
выходы2
и2 2
становится ,2x2
что отпечатки 4. Вы можете добавить , что в качестве альтернативного решения.(2)
работает так же.2
работает так же.Brain-Flak , 6 байтов
Попробуйте онлайн!
объяснение
Что это делает, должно быть довольно ясно.
{}
захватывает значение из стека, которое для начала неявно равно нулю,()
добавляет к нему единицу и(...)
выталкивает значение. На втором запуске, так как в стеке уже есть 1, это просто добавляет еще 1 к нему, чтобы получить два. На самом деле, если вы скопируете кодn
раз, он всегда будет выводитьсяn
.источник
> <> ,
76 байт-1 байт благодаря Teal pelican
Попробуйте онлайн!
Попробуй вдвое!
объяснение
Я использовал,
0
но я мог бы также использовать1
-9
,a
-f
потому что все они помещают одно значение в стек.Не в два раза:
Вдвое:
источник
Сетчатка , 3 байта
Попробуйте онлайн!
Печать
2
. Удваивая это печатает4
.1
Можно заменить почти все остальное.объяснение
Заменяет пустой ввод на
1
.Подсчитывает количество пустых совпадений, в
1
которых два (один до1
и один после него).Если мы удвоим программу, мы получим дополнительный этап, такой как первый. На этот раз он вставляет
1
до и после начального, давая111
. Когда мы теперь посчитаем количество совпадений пустого регулярного выражения, мы получим четыре из них.источник
Python REPL, 2 байта
Также работает в Pip, Dyalog APL, JavaScript, J и R
Я делаю TIO прямо сейчас,я не мог заставить Python Repl работать на TIOисточник
+1
это именно то, что я буду делать: P, черт возьми, вы меня ниндзя примерно на минуту> <Нейм , 1 байт
Просто увеличивает вершину стека.
Стек можно представить как бесконечное количество нулей для начала, так что это увеличивает ноль, чтобы получить единицу, и удваивает, увеличивает его снова, чтобы получить два.
Попробуйте онлайн!
Альтернативное решение:
Добавляет 2 вместо 1.
источник
JavaScript, 38 байт
источник
i++
?Java8,
135118110 байтОдиночный , отпечатки 8
Удвоено , отпечатки 16
Предварительный ответ, 118 байт
Холост , принты 1
Удвоено , отпечатки 2
Как это работает
Java-компилятор создает один файл для каждого класса в исходном файле. Поэтому я могу просто проверить, существует ли ресурс с именем B.class.
Оригинальный ответ, 135 байт
Холост , принты 1
Удвоено , отпечатки 2
источник
Python 2 , 32 байта
Попробуйте онлайн!
Двойной исходный код
объяснение
Это открывает файл исходного кода в режиме добавления
Затем мы находим текущую позицию в файле, это будет в конце файла из-за открытия в режиме добавления
Мы печатаем эту длину
И добавьте комментарий, чтобы дублирование исходного кода не выполняло больше кода
источник
Excel VBA, 12 байт
Функция анонимного непосредственного окна VBE, которая принимает входные данные и выводит их в диапазон
[A1]
. Значением диапазона по умолчанию[A1]
является""
(пустая строка), и после одного выполнения следующее устанавливает это значение1
и увеличивается1
со всеми последующими выполнениями.Ввод, вывод
Одиночная версия
Двойная версия
источник
Japt , 1 байт
Попробуйте онлайн!
Попробуй вдвое!
Повторяется еще дольше!
Скорее просто. Джапт переносится в JS, и
Ä
переносится в+ 1
, поэтомуÄÄ
переносится в+ 1 + 1
и так далее.источник
É
- к счастью, я сначала просмотрел ответы.Шелуха , 3 байта
Попробуйте онлайн!
Оригинальная идея, за то, что я видел в других ответах.
объяснение
|
в Husk есть оператор «или», который возвращает свой второй аргумент, если он истинный, в противном случае первый аргумент. Применительно к аргументам разных типов он сначала преобразует их все в числа: преобразование строк (и списков в целом) выполняется путем вычисления их длины.В исходной программе мы применяем
|
к 1 пустую строку, которая преобразуется в 0: результат равен 1.В удвоенной программе мы применяем
|
к 1 и строке «| 1», которая преобразуется в 2: результат равен 2.источник
Braingolf, 1 байт
Попробуйте онлайн!
Попробуй вдвое!
Я не знаю, как это работает, самое главное, что это работает!
источник
CJam, 3 байта
Попробуйте онлайн
Инкапсулируйте 5 в массиве. Возвращаем длину массива. Когда вы дублируете код, ранее возвращенная длина 1 уже находится в стеке, поэтому вы получаете массив [1,5], который возвращает длину 2.
источник
Рубин, 16 байт
Попробуйте онлайн!
Вдвое:
Попробуйте онлайн! Попробуйте онлайн!
источник
Wumpus , 4 байта
Попробуйте онлайн!
Попробуйте онлайн!
Нормальный код печатает,
32
а дублированный печатает64
.объяснение
"
работает так же, как и во многих других Fungeoids: он переключает строковый режим, где каждый отдельный символьный код помещается в стек вместо выполнения команды. Однако, в отличие от большинства других Fungeoids, игровое поле Wumpus не меняется, поэтому IP вместо этого отражается от конца и отскакивает назад и вперед по коду.Таким образом, для одной программы фактически выполняется следующий код:
Струна толкает
32, 79, 64, 79, 32
. Тогда пробел ничего не делает,O
печатает32
и@
завершает программу.Для удвоенной программы строка вместо этого завершается до того, как IP возвращается в исходное состояние, поэтому код просматривается только один раз:
На этот раз строка нажимает
32, 79, 64
,O
печатает64
и@
завершает программу.Похоже, это единственное 4-байтовое решение.
источник
,,, 2 байта
объяснение
источник
∑
все элементы помещаются в стек.Пакет, 13 байт
Объяснение:
%~z0
увеличивается до длины исходного файла, поэтому удвоение файла просто удваивает длину. Вторая строка определяет пустую метку, которая ничего не делает. Когда файл удваивается, он становится меткой с именем@echo %~z0
, а третья строка - другой пустой меткой.источник
QBasic,
4428 байтВ конце нет новой строки. Выходы,
4
когда одиночные,8
когда удвоены.объяснение
Для одиночной версии:
4
это номер строки.READ x,y
берет первые два значения изDATA
оператора и сохраняет их вx
иy
. Таким образом,x
получает4
иy
получает0
.?x+y
добавляет два числа и печатает их.END
выход из программы.В удвоенной версии,
DATA
оператор становитсяDATA 4,04
, который присваивает4
обаx
иy
, таким образом, делаяx+y
равным8
вместо.источник
Befunge-98 , 5 байт
Попробуйте онлайн!
g
получает значение символа по координате (9, 0) в Funge-Space;.
печатает его как целое число и@
останавливает программу. В не удвоенной версии (9, 0) выходит за пределы программы, и Funge-Space вне программы инициализируется значением по умолчанию пробела, поэтому мы печатаем 32. В удвоенной версии (9, 0) это@
символ, поэтому мы печатаем 64.источник
Perl 5 , 7 байт
С участием
-M5.10.0
Попробуйте онлайн!
Удвоено :
-2 благодаря Тону Хоспелу
источник
say
для получения еще 2 байтов (-M5.10.0
или-E
вместо-e
бесплатно)