/* 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
. Se você dobrar, sua fonte é `` (programa vazio) e isso também produz5
, não importa o que você faça. Dito isto, um programa vazio duplicado ainda é o programa vazio e sempre produz a mesma saída, exceto no caso em que o programa vazio significa outra coisa (um gerador de números aleatórios, por exemplo), que não poderia ser válido de qualquer maneira.Respostas:
Python 2 , 33 bytes
Experimente online!
Tente dobrar
Python 3 , 28 bytes
Experimente online!
Tente dobrar
Explicação
Isso abre o código fonte usando
open(__file__)
e obtém seu comprimento usandolen
o#
impede que qualquer código adicional seja lido. Quando a fonte é duplicada, também é o comprimento.fonte
tell()
retorna a posição atual no arquivoGeléia , 1 byte
Experimente online!
ou tente duas vezes!
Não tenho ideia de como isso funciona, mas aparentemente funciona.
fonte
Planilhas Google,
115 bytesFórmula de planilha anônima que não recebe nenhuma entrada e sai na célula que contém a fórmula
Como uma fórmula única, isso avalia uma pilha de chamadas que se parece um pouco com
No entanto, quando essa fórmula da planilha é duplicada, essa pilha de chamadas é avaliada em
Obviamente, uma implicação do uso desse método é que, uma vez repetido mais de uma vez, na terceira e em todas as iterações seguintes do problema, a pilha de chamadas alcançará
=4/(2=4)
e, assim, avaliará=4/0
e lançará um#DIV/0!
erro-6 bytes mudando para álgebra longe da
=DIVIDE(4,2
fórmulafonte
)
, essa resposta é a única resposta do Google Sheets que eu vi que não se traduz em resposta do Excel05AB1E , 2 bytes
Original
Experimente online!
Dobrado
Experimente online!
Explicação
X empurra 1 para a pilha.
O soma a pilha.
fonte
1O
!C (gcc), 37 bytes
O arquivo não contém uma nova linha à direita.
Versão dobrada, para realçar a sintaxe:
Links TIO: simples , duplos .
fonte
/*
comentário é comentado por//
, o que significa que o seguinte nãoi=1
é comentado. Isto é mais fácil de ver se você colocar a versão duplicada do código em uma sintaxe marcadorHexagonia , 7 bytes
Imprime 1 regularmente e depois duas vezes.
Experimente online! ou Experimente dobrar online!
Versões expandidas:
Regular:
Dobrado:
O programa regular segue o caminho:
/)!.@
que incrementa uma borda da memória (todas são inicializadas em zero) e depois imprime seu valor numérico. O programa duplicado é o seguinte:/.)/)!@
que incrementa a borda duas vezes antes de imprimir.fonte
[@!)
(e algumas soluções de 570 5 bytes). Como você realmente se deu ao trabalho de encontrar uma solução manualmente, estou perfeitamente feliz por você postar a solução de 4 bytes.Python 2 , 21 bytes
Experimente online!
Dobrado:
Experimente online!
fonte
Braingolf , 1 byte
Experimente online!
Agora estamos conversando!
Saídas
20
ou40
quando a fonte é duplicada.Explicação
+
é obviamente o operador "soma", "adição" ou "mais", em Braingolf, no entanto, possui funções diádicas, monádicas e niládicas.Quando houver pelo menos 2 itens na pilha, é diádico e somará os 2 principais itens da pilha.
Quando houver apenas 1 item na pilha, é monádico e dobrará o item.
Quando não há itens na pilha, é niládico e empurra 20!
Por que ele empurra 20? Bem, porque um programa Braingolf vazio simplesmente imprime uma nova linha, e o valor ASCII de uma nova linha é 10, então eu pensei em fazer o niladic
+
push 20, então é como se estivesse sendo monádico na nova linha implícita (mesmo que não esteja em tudo)Portanto:
E quando dobrado:
fonte
Haskell ,
2618 bytesExperimente online!
Dobrado:
Experimente online!
Encontrei esta versão ao responder a versão tripple do desafio .
Versão de 26 bytes sem abuso de comentário:
Experimente online! Imprime
1
.Na proteção de padrão, o identificador
n
é definido como1
enmain
para2
, em seguida,print n
imprime1
.Programa duplo:
Experimente online! Imprime
2
.No primeiro padrão, a proteção novamente
n
é configurada para1
enmain
para2
, no entanto, a declaração de impressão se tornouprint nmain
, e2
é impressa. Como as declarações de identificador em uma proteção de padrão são avaliadas como verdadeiras, a segunda proteção de padrão nunca pode ser alcançada.fonte
Mathematica, 5 bytes
saídas 2 e (1 + 1) (1 + 1) saídas 4
e claro (como muitos de vocês pediram)
Mathematica, 3 bytes
fonte
(2)
?2
e um espaço funcionaria, como seria+1
, mas deve-se notar que todos estes assumem ambiente caderno de Mathematicax
, de tal forma que2
as saídas2
e2 2
torna-se2x2
que as impressões 4. Você pode adicionar isso como uma solução alternativa.(2)
funciona também.2
funciona também.Flak cerebral , 6 bytes
Experimente online!
Explicação
O que isso faz deve ser bem claro.
{}
pega um valor da pilha, que implicitamente zero para começar,()
adiciona um a ele e(...)
empurra o valor. Na segunda execução, uma vez que já existe um 1 na pilha, apenas adiciona mais 1 para fazer dois. De fato, se você copiar o códigon
vezes, ele sempre será exibidon
.fonte
> <> ,
76 bytes-1 byte graças ao pelicano Teal
Experimente online!
Experimente dobrou!
Explicação
Eu usei um
0
mas também poderia ter usado1
-9
,a
-f
porque todos eles colocam um único valor na pilha.Não dobrado:
Dobrado:
fonte
Retina , 3 bytes
Experimente online!
Imprime
2
. Dobrar é impresso4
.O
1
pode ser substituído por praticamente qualquer outra coisa.Explicação
Substitui a entrada vazia por
1
.Conta o número de correspondências vazias em
1
que são duas (uma antes1
e uma depois).Se dobrarmos o programa, obteremos um estágio adicional como o primeiro. Desta vez, ele insere um
1
antes e depois do inicial, dando111
. Quando agora contamos o número de correspondências da regex vazia, obtemos quatro delas.fonte
REPL Python, 2 bytes
Também funciona em Pip, Dyalog APL, JavaScript, J e R
Estou fazendo um TIO agora.Não consegui fazer o python repl funcionar no TIOfonte
+1
é exatamente o que vou fazer: P mas danado, você me ninja'd por cerca de um minuto> <Neim , 1 byte
Simplesmente incrementa a parte superior da pilha.
A pilha pode ser imaginada como uma quantidade infinita de zeros para começar, portanto, isso aumenta zero para obter um e dobrou, incrementa novamente para obter dois.
Experimente online!
Uma solução alternativa:
Adiciona 2, em vez de 1.
fonte
JavaScript, 38 bytes
fonte
i++
?Java8,
135118110 bytesIndividual , impressões 8
Dobrado , impressões 16
Visualizações de resposta, 118 bytes
Único , imprime 1
Dobrado , impressões 2
Como isso funciona
O compilador java cria um único arquivo para cada classe no arquivo de origem. Portanto, posso simplesmente verificar se existe um recurso com o nome B.class.
Resposta original, 135 bytes
Único , imprime 1
Dobrado , impressões 2
fonte
Python 2 , 32 bytes
Experimente online!
Código fonte duplo
Explicação
Isso abre o arquivo de código-fonte no modo de acréscimo
Em seguida, encontramos a posição atual no arquivo, que será no final do arquivo devido à abertura no modo de acréscimo
Nós imprimimos esse comprimento
E adicione um comentário, para que dobrar o código fonte não execute mais código
fonte
Excel VBA, 12 bytes
Função de janela imediata anônima do VBE, que recebe as entradas e saídas para o intervalo
[A1]
. O valor padrão do intervalo[A1]
é""
(string vazia) e após uma execução, o seguinte define1
e incrementa1
com todas as execuções subseqüentes.Entrada / Saída
Versão Única
Versão dobrada
fonte
Japt , 1 byte
Experimente online!
Experimente dobrou!
Também se repete ainda mais!
Bastante simples. Japt transpila para JS e
Ä
transpila para+ 1
, portanto,ÄÄ
transpila para+ 1 + 1
e assim por diante.fonte
É
- felizmente, digitalizei as respostas primeiro.Casca , 3 bytes
Experimente online!
Uma ideia original, pelo que vi em outras respostas.
Explicação
|
in Husk é um operador "ou" que retorna seu segundo argumento, se for válido, caso contrário, o primeiro argumento. Quando aplicada a argumentos de tipos diferentes, primeiro transforma todos eles em números: a transformação de strings (e listas em geral) é feita calculando seu comprimento.No programa original, aplicamos
|
1 e uma string vazia, que é convertida em 0: o resultado é 1.No programa duplicado, aplicamos
|
a 1 e a string "| 1", que é convertida em 2: o resultado é 2.fonte
Braingolf, 1 byte
Experimente online!
Experimente dobrou!
Não sei como isso funciona, o mais importante!
fonte
CJam, 3 bytes
Experimente Online
Encapsula 5 na matriz. Retorna o comprimento da matriz. Quando você duplica o código, o comprimento retornado anteriormente, 1, já está na pilha, então você obtém uma matriz de [1,5], que retorna o comprimento 2.
fonte
Ruby, 16 bytes
Experimente online!
Dobrado:
Experimente online! Experimente online!
fonte
Wumpus , 4 bytes
Experimente online!
Experimente online!
O código normal é impresso
32
e o dobro é impresso64
.Explicação
"
funciona como em muitos outros Fungeoids: alterna o modo de sequência, em que cada código de caractere individual é enviado à pilha, em vez de executar o comando. No entanto, em contraste com a maioria dos outros Fungeoids, o campo de jogo de Wumpus não se destaca, então o IP refletirá no final e retornará pelo código.Portanto, para o programa único, o seguinte código é realmente executado:
A corda empurra
32, 79, 64, 79, 32
. Então o espaço não faz nada,O
imprime32
e@
finaliza o programa.Para o programa duplicado, a sequência é terminada antes que o IP retorne, portanto, o código é atravessado apenas uma vez:
Desta vez, a string empurra
32, 79, 64
,O
imprime64
e@
encerra o programa.Essa parece ser a única solução de 4 bytes.
fonte
,,,, 2 bytes
Explicação
fonte
∑
aparece todos os elementos na pilha.Lote, 13 bytes
Explicação: se
%~z0
expande para o comprimento do arquivo de origem, portanto, a duplicação do arquivo simplesmente dobra o comprimento. A segunda linha define um rótulo vazio, que não faz nada. Quando o arquivo é duplicado, ele se torna um rótulo chamado@echo %~z0
, enquanto a terceira linha é outro rótulo vazio.fonte
QBasic,
4428 bytesNão há nova linha no final. Saídas
4
quando individuais,8
quando duplicadas.Explicação
Para a versão única:
4
é um número de linha.READ x,y
pega os dois primeiros valores daDATA
instrução e os armazena emx
ey
. Assim,x
recebe4
ey
recebe0
.?x+y
adiciona os dois números e os imprime.END
sai do programa.Na versão dobrada, a
DATA
declaração se tornaDATA 4,04
, que atribui4
a ambosx
ey
, portanto, torna-sex+y
igual8
.fonte
Befunge-98 , 5 bytes
Experimente online!
g
obtém o valor do caractere na coordenada (9, 0) no Funge-Space;.
imprime como um número inteiro e@
interrompe o programa. Na versão não dobrada, (9, 0) está fora dos limites do programa, e o Funge-Space fora do programa é inicializado com o valor padrão de um espaço, então imprimimos 32. Na versão dobrada, (9, 0) é o@
caractere, então imprimimos 64.fonte
Perl 5 , 7 bytes
Com
-M5.10.0
Experimente online!
Dobrado :
-2 graças a Ton Hospel
fonte
say
para obter mais 2 bytes (A-M5.10.0
ou-E
em vez de-e
é livre)