/* 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
. Si lo duplica, su fuente es `` (programa vacío) y eso también produce5
, sin importar lo que haga. Dicho esto, un programa vacío duplicado sigue siendo el programa vacío, y siempre produce la misma salida, excepto en el caso en que el programa vacío significa algo más (un generador de números aleatorios, por ejemplo), que de todos modos no podría ser válido.Respuestas:
Python 2 , 33 bytes
Pruébalo en línea!
Pruébalo doblado
Python 3 , 28 bytes
Pruébalo en línea!
Pruébalo doblado
Explicación
Esto abre el código fuente usando
open(__file__)
y obtiene su longitud usandolen
los#
evita que cualquier código adicional de ser leída. Cuando la fuente se duplica, también lo hace la longitud.fuente
tell()
devuelve la posición actual en el archivoGelatina , 1 byte
Pruébalo en línea!
o Pruébalo doble!
No tengo idea de cómo funciona esto, pero aparentemente lo hace.
fuente
Hojas de cálculo de Google,
115 bytesFórmula de hoja de trabajo anónima que no toma entradas y salidas en la celda que contiene la fórmula
Como una fórmula única, esto se evalúa como una pila de llamadas que se parece un poco a
Sin embargo, cuando esta fórmula de hoja de trabajo se duplica, esta pila de llamadas se evalúa como
Por supuesto, una implicación de usar este método es que una vez que se repite más de una vez, en la tercera y todas las siguientes iteraciones del problema, la pila de llamadas alcanzará
=4/(2=4)
y, por lo tanto, evaluará=4/0
y arrojará un#DIV/0!
error-6 bytes cambiando a álgebra lejos de la
=DIVIDE(4,2
fórmulafuente
)
, esta respuesta es la única respuesta de Google Sheets que he visto que no se traduce en una respuesta de Excel05AB1E , 2 bytes
Original
Pruébalo en línea!
Doblado
Pruébalo en línea!
Explicación
X empuja 1 a la pila.
O suma la pila.
fuente
1O
!C (gcc), 37 bytes
El archivo no contiene una nueva línea final.
Versión duplicada, para resaltar la sintaxis:
Enlaces TIO: simple , doble .
fuente
/*
comentario lo hace//
, lo que significa que no se comenta lo siguientei=1
. Esto es más fácil de ver si coloca la versión duplicada del código en un resaltador de sintaxisHexagonía , 7 bytes.
Imprime 1 regularmente y luego 2 duplicados.
Pruébalo en línea! o Pruébelo duplicado en línea!
Versiones ampliadas:
Regular:
Doblado:
El programa normal sigue la ruta:
/)!.@
que incrementa el borde de la memoria (todos se inicializan a cero) y luego imprime su valor numérico. Sigue el programa duplicado: en su lugar,/.)/)!@
incrementa el borde dos veces antes de imprimir.fuente
[@!)
(y algunas soluciones de 570 de 5 bytes). Dado que en realidad se tomó la molestia de encontrar una solución a mano, me complace que publique la solución de 4 bytes.Python 2 , 21 bytes
Pruébalo en línea!
Doblado:
Pruébalo en línea!
fuente
Braingolf , 1 byte
Pruébalo en línea!
¡Ahora estamos hablando!
Salidas
20
, o40
cuando la fuente se duplica.Explicación
+
es, por supuesto, el operador "suma", "agregar" o "más", en Braingolf, sin embargo, tiene funciones diádicas, monádicas y niládicas.Cuando hay al menos 2 elementos en la pila, es diádico y sumará los 2 elementos superiores de la pila.
Cuando solo hay 1 elemento en la pila, es monádico y duplicará el elemento.
Cuando no hay elementos en la pila, ¡es niládico y empuja 20!
¿Por qué empuja 20? Bueno, porque un programa Braingolf vacío simplemente imprime una nueva línea, y el valor ASCII de una nueva línea es 10, así que pensé que haría un
+
impulso niládico 20, por lo que es como si fuera monádico en la nueva línea implícita (aunque no esté en todas)Por lo tanto:
Y cuando se duplicó:
fuente
Haskell ,
2618 bytesPruébalo en línea!
Doblado:
Pruébalo en línea!
Encontré esta versión mientras respondía la versión triple del desafío .
Versión de 26 bytes sin abuso de comentarios:
Pruébalo en línea! Impresiones
1
.En el patrón de vigilancia del identificador
n
se establece en1
ynmain
para2
, a continuación,print n
imprime1
.Programa doble:
Pruébalo en línea! Impresiones
2
.En el primer guardia patrón nuevamente
n
se establece en1
ynmain
para2
, sin embargo, la sentencia de impresión se ha convertidoprint nmain
, por lo que2
se imprime. Debido a que las declaraciones de identificador en un protector de patrón se evalúan como verdaderas, nunca se puede alcanzar el segundo protector de patrón.fuente
Mathematica, 5 bytes
salidas 2 y (1 + 1) (1 + 1) salidas 4
y por supuesto (como muchos de ustedes preguntaron)
Mathematica, 3 bytes
fuente
(2)
?2
y un espacio funcionarían, como lo haría,+1
pero debe tenerse en cuenta que todos estos suponen el entorno del cuaderno de Mathematicax
, de modo que se2
genera2
y se2 2
convierte en2x2
impresiones 4. Puede agregarlo como una solución alternativa.(2)
funciona igual de bien2
funciona igual de bienBrain-Flak , 6 bytes
Pruébalo en línea!
Explicación
Lo que esto hace debe quedar bastante claro.
{}
toma un valor de la pila, que implícitamente es cero para empezar, le()
agrega uno y(...)
empuja el valor. En la segunda ejecución, dado que ya hay un 1 en la pila, esto solo agrega otro 1 para formar dos. De hecho, si copia el códigon
veces, siempre saldrán
.fuente
> <> ,
76 bytes-1 byte gracias a Teal pelican
Pruébalo en línea!
¡Pruébalo doblado!
Explicación
Usé un
0
pero podría también haber usado1
-9
,a
-f
porque todos empujan un solo valor en la pila.No doblado:
Doblado:
fuente
Retina , 3 bytes
Pruébalo en línea!
Impresiones
2
. Doblarlo imprime4
.El
1
puede ser reemplazado por casi cualquier otra cosa.Explicación
Reemplaza la entrada vacía con
1
.Cuenta el número de coincidencias vacías en las
1
que hay dos (una antes1
y otra después).Si duplicamos el programa, obtenemos una etapa adicional como la primera. Esta vez inserta un
1
antes y un después del inicial, dando111
. Cuando ahora contamos el número de coincidencias de la expresión regular vacía, obtenemos cuatro de ellas.fuente
Python REPL, 2 bytes
También funciona en Pip, Dyalog APL, JavaScript, J y R
Estoy haciendo un TIO en este momentoNo pude obtener respuestas de Python para trabajar en TIOfuente
+1
es exactamente lo que haré: P pero maldita sea, me ninja por un minuto> <Neim , 1 byte
Simplemente incrementa la parte superior de la pila.
La pila se puede imaginar como una cantidad infinita de ceros para comenzar, por lo que esto incrementa cero para obtener uno, y duplicado, lo incrementa nuevamente para obtener dos.
Pruébalo en línea!
Una solución alternativa:
Agrega 2, en lugar de 1.
fuente
JavaScript, 38 bytes
fuente
i++
?Java8,
135118110 bytesSingle , imprime 8
Doblado , impresiones 16
Vista previa de respuestas, 118 bytes
Single , imprime 1
Doblado , impresiones 2
Como funciona esto
El compilador de Java crea un único archivo para cada clase en el archivo fuente. Por lo tanto, simplemente puedo verificar si existe un recurso con el nombre B.class.
Respuesta original, 135 bytes
Single , imprime 1
Doblado , impresiones 2
fuente
Python 2 , 32 bytes
Pruébalo en línea!
Doble código fuente
Explicación
Esto abre el archivo de código fuente en modo agregar
Luego encontramos la posición actual en el archivo, esto será al final del archivo debido a la apertura en modo de agregar
Imprimimos esta longitud
Y agregue un comentario, para que duplicar el código fuente no ejecute más código
fuente
Excel VBA, 12 bytes
Función de ventana inmediata anónima VBE que toma entradas y salidas al rango
[A1]
. El valor predeterminado del rango[A1]
es""
(cadena vacía) y después de una ejecución, lo siguiente establece esto1
e incrementa1
con todas las ejecuciones posteriores.De entrada y salida
Versión única
Versión duplicada
fuente
Japt , 1 byte
Pruébalo en línea!
¡Pruébalo doblado!
¡Se repite incluso más tiempo también!
Bastante simple. Japt transpila a JS, y
Ä
transpila a+ 1
, por lo queÄÄ
transpila a+ 1 + 1
, y así sucesivamente.fuente
É
, afortunadamente escaneé las respuestas primero.Casco , 3 bytes
Pruébalo en línea!
Una idea original, por lo que he visto en otras respuestas.
Explicación
|
en Husk es un operador "o" que devuelve su segundo argumento si es verdadero, de lo contrario el primer argumento. Cuando se aplica a argumentos de diferentes tipos, primero los transforma a todos en números: la transformación de cadenas (y listas en general) se realiza calculando su longitud.En el programa original aplicamos
|
a 1 y una cadena vacía, que se convierte a 0: el resultado es 1.En el programa duplicado aplicamos
|
a 1 y la cadena "| 1", que se convierte a 2: el resultado es 2.fuente
Braingolf, 1 byte
Pruébalo en línea!
¡Pruébalo doblado!
¡No sé cómo funciona esto, lo más importante es que sí!
fuente
CJam, 3 bytes
Pruébalo en línea
Encapsula 5 en la matriz. Longitud de retorno de la matriz. Cuando duplica el código, la longitud devuelta anteriormente, 1, ya está en la pila, por lo que obtiene una matriz de [1,5], que devuelve la longitud 2.
fuente
Ruby, 16 bytes
Pruébalo en línea!
Doblado:
Pruébelo en línea ¡Pruébelo en línea!
fuente
Wumpus , 4 bytes
Pruébalo en línea!
Pruébalo en línea!
Se imprime el código normal
32
y se imprime el duplicado64
.Explicación
"
funciona como lo hace en muchos otros Fungeoids: alterna el modo de cadena, donde cada código de carácter individual se inserta en la pila, en lugar de ejecutar el comando. Sin embargo, en contraste con la mayoría de los otros Fungeoids, el campo de juego de Wumpus no se ajusta, por lo que la IP se reflejará en el extremo y rebotará de un lado a otro a través del código.Entonces, para el programa único, el siguiente código se ejecuta realmente:
La cuerda empuja
32, 79, 64, 79, 32
. Entonces el espacio no hace nada,O
imprime32
y@
termina el programa.Para el programa duplicado, la cadena se termina antes de que la IP se recupere, por lo que el código solo se recorre una vez:
Esta vez, la cadena empuja
32, 79, 64
,O
imprime64
y@
termina el programa.Esta parece ser la única solución de 4 bytes.
fuente
,,,, 2 bytes
Explicación
fuente
∑
aparece todos los elementos en la pila.Lote, 13 bytes
Explicación: se
%~z0
expande a la longitud del archivo de origen, por lo que duplicar el archivo simplemente duplica la longitud. La segunda línea define una etiqueta vacía, que no hace nada. Cuando el archivo se duplica, se convierte en una etiqueta con nombre@echo %~z0
, mientras que la tercera línea es otra etiqueta vacía.fuente
QBasic,
4428 bytesNo hay nueva línea al final. Salidas
4
cuando es simple,8
cuando se duplica.Explicación
Para la versión individual:
4
es un número de líneaREAD x,y
toma los dos primeros valores de laDATA
declaración y los almacena enx
yy
. Así,x
consigue4
yy
consigue0
.?x+y
agrega los dos números y los imprime.END
sale del programaEn la versión duplicada, la
DATA
declaración se convierte enDATA 4,04
, que se asigna4
a ambosx
yy
, por lo tanto, esx+y
igual en su8
lugar.fuente
Befunge-98 , 5 bytes
Pruébalo en línea!
g
obtiene el valor del carácter en la coordenada (9, 0) en Funge-Space;.
lo imprime como un número entero y@
detiene el programa. En la versión no duplicada, (9, 0) está fuera de los límites del programa, y Funge-Space fuera del programa se inicializa al valor predeterminado de un espacio, por lo que imprimimos 32. En la versión duplicada, (9, 0) es el@
personaje, entonces imprimimos 64.fuente
Perl 5 , 7 bytes
Con
-M5.10.0
Pruébalo en línea!
Doblado :
-2 gracias a Ton Hospel
fuente
say
para ganar 2 bytes más (El-M5.10.0
o en-E
lugar de-e
es gratis)