function answersUrl(a){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+a+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(a,b){return"https://api.stackexchange.com/2.2/answers/"+b.join(";")+"/comments?page="+a+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(a){answers.push.apply(answers,a.items),answers_hash=[],answer_ids=[],a.items.forEach(function(a){a.comments=[];var b=+a.share_link.match(/\d+/);answer_ids.push(b),answers_hash[b]=a}),a.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(a){a.items.forEach(function(a){a.owner.user_id===OVERRIDE_USER&&answers_hash[a.post_id].comments.push(a)}),a.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(a){return a.owner.display_name}function process(){var a=[];answers.forEach(function(b){var c=b.body;b.comments.forEach(function(a){OVERRIDE_REG.test(a.body)&&(c="<h1>"+a.body.replace(OVERRIDE_REG,"")+"</h1>")});var d=c.match(SCORE_REG);d?a.push({user:getAuthorName(b),size:+d[2],language:d[1],link:b.share_link}):console.log(c)}),a.sort(function(a,b){var c=a.size,d=b.size;return c-d});var b={},c=1,d=null,e=1;a.forEach(function(a){a.size!=d&&(e=c),d=a.size,++c;var f=jQuery("#answer-template").html();f=f.replace("{{PLACE}}",e+".").replace("{{NAME}}",a.user).replace("{{LANGUAGE}}",a.language).replace("{{SIZE}}",a.size).replace("{{LINK}}",a.link),f=jQuery(f),jQuery("#answers").append(f);var g=a.language;g=jQuery("<a>"+g+"</a>").text(),b[g]=b[g]||{lang:a.language,lang_raw:g,user:a.user,size:a.size,link:a.link}});var f=[];for(var g in b)b.hasOwnProperty(g)&&f.push(b[g]);f.sort(function(a,b){return a.lang_raw.toLowerCase()>b.lang_raw.toLowerCase()?1:a.lang_raw.toLowerCase()<b.lang_raw.toLowerCase()?-1:0});for(var h=0;h<f.length;++h){var i=jQuery("#language-template").html(),g=f[h];i=i.replace("{{LANGUAGE}}",g.lang).replace("{{NAME}}",g.user).replace("{{SIZE}}",g.size).replace("{{LINK}}",g.link),i=jQuery(i),jQuery("#languages").append(i)}}var QUESTION_ID=101638,ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",OVERRIDE_USER=34718,answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:400px;float:left}table thead{font-weight:800}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/codegolf/all.css?v=83c949450c8b"><div id="language-list"> <h2>Shortest Solution 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><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><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody></table><table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody></table>
Respuestas:
WinDbg, 1 byte
¡Guauu! ¡Nunca esperé una solución de 1 byte de WinDbg!
#
busca un patrón de desmontaje, pero como no hay parámetros, solo busca devolver la siguiente instrucción de ensamblaje en cualquier volcado / proceso al que esté conectado. No estoy seguro de la lógica para configurar la dirección inicial, pero lo hace.Salida de muestra:
fuente
Java 7,
333027 bytesPorque Java
fuente
toString
en una versión anterior pero luego el tipo de retorno es elString
que es más largo queint
. ¡Guarda los bytes! :]hashCode()
es una abreviatura parathis.hashCode()
, por lo que solo funcionaría como un método de instancia, no un método estático. En ese caso, necesitaría un código adicional para crear un objeto en la persona que llama. Eso es relevante aquí porque es el código para crear un objeto responsable del no determinismo.()->hashCode()
para 14 bytes. Just sayin ';)MATLAB, 3 bytes
why
proporciona respuestas a casi cualquier pregunta. Algunos ejemplos:Esto es más corto que cualquier
rand
función que se me ocurra.fuente
R, 1 byte
Emite el código fuente de la función y una dirección de puntero de memoria que cambia con cada (re) inicio de R.
fuente
eh? , 0 bytes
Un programa vacío todavía produce resultados. Las últimas líneas del intérprete de Python que se ejecutan:
Al final de un programa, el intérprete de Python imprimirá
...
, luego creará / abrirá un archivo de texto llamadoNotes.txt
y escribirá una cadena que contiene la hora actual al frente.fuente
Laberinto , 5 bytes
Imprime
0
o nada (50% de probabilidad cada uno).Pruébalo en línea!
Hay un caso muy específico en el que Labyrinth exhibe un comportamiento aleatorio:
Si se cumplen todas esas condiciones, la dirección en la que se mueve la IP se elige (uniformemente) al azar. La cuestión principal es que esas tres condiciones son imposibles de cumplir en el flujo de control regular, lo que significa que a menos que modifique el código fuente en tiempo de ejecución.
(Esto puede parecer un poco arbitrario, pero en realidad es el comportamiento más consistente que podría encontrar para estas condiciones, ya que normalmente la dirección de la IP siempre depende de la dirección anterior, sus vecinos y el signo de la parte superior de la pila, y Esto parecía una forma elegante de incluir una fuente de aleatoriedad en el idioma).
Con la ayuda de las instrucciones de rotación del código fuente (
<^>v
) es posible llevar la IP a esta situación. Un ejemplo de esto se ve en la parte superior. La IP inicialmente apunta al este y comienza en la parte superior. Lasv
rota la columna actual por lo que se obtiene:La IP se mueve junto con esta rotación para que todavía esté en el
v
, apuntando hacia el este. Todas las condiciones se cumplen ahora, por lo que la IP aumentará o disminuirá aleatoriamente. Si sube, el programa termina inmediatamente. Si baja, imprime un cero, gira la columna nuevamente y luego termina.Hay otros tres programas que hacen uso de esto (uno que también imprime
0
, uno que imprime00
y otro que imprime000
):(En realidad, hay muchos más que otros tres programas, porque también podría usarlos en
.
lugar de!
imprimir bytes nulos, o reemplazarlos"
con una gran variedad de comandos, pero creo que todos funcionan esencialmente igual).fuente
Befunge (-93 y -98), 3 bytes
La
?
ejecución de los envíos en una dirección aleatoria. Si sube o baja, vuelve al bucle y se vuelve a?
enrollar. Si se va hacia la izquierda, el programa se envuelve@
y sale sin imprimir nada. Si sale bien, imprime0
(la salida producida por.
cuando la pila está vacía) y luego sale en el@
.fuente
.
en el programa que estaba usando para las pruebas, pero de alguna manera se convirtió en una,
copia cuando lo copié en PPCG. Fijo.Minecraft,
54 bytesSe usa escribiendo en la consola de un servidor o en un bloque de comandos y dándole poder. Se puede ejecutar desde la interfaz de chat anteponiendo a
/
.Por lo general, esto no hace nada, pero si hay un jugador con el nombre de usuario "8" en el servidor, se les otorgarán permisos de operador. Tenga en cuenta que, aunque Minecraft normalmente requiere que los nombres de usuario tengan 3 caracteres, algunas cuentas con nombres más cortos se crearon antes de esta restricción.
La versión que se puede demostrar que no es determinista sin uno de estos nombres de usuario o el riesgo de otorgar permisos de operador de usuario está aquí:
Muestra un mensaje a todos, el mensaje es el nombre de usuario de un jugador aleatorio. El
op
comando solo toma un literal de cadena, no cualquier script que devuelva una cadena.El
me
comando realmente no funcionaría para el primer ejemplo, se mostraría"<your-username> 8"
. Cuando se ejecuta desde un bloque de comandos, no sería determinista ya que todos los bloques de comandos tienen el mismo "nombre de usuario", pero ejecutarlo desde la interfaz de chat requeriría/
un byte adicional.fuente
/
¿no está incluido en el recuento de bytes?help
en un bloque de comandos, que es de 4 bytes (y no requiere juegos pirateados).sh + procps, 1 byte
Esta es la solución más corta que conozco que funciona mediante llamadas a ejecutables externos.
procps
es el paquete responsable de informar información sobre el estado actual del sistema (ps
y sus amigos), y está instalado en la mayoría de las distribuciones de Linux de manera predeterminada;w
es el comando con el nombre más corto que contiene y devuelve información sobre los usuarios conectados, pero también información no determinista como el tiempo de actividad.fuente
Informar 7, 6 bytes
Este no es un programa válido de Inform 7, ya que no se ha definido "x" ni "y". Entonces esto arroja un error.
Sin embargo, algunos de los mensajes de error de Inform 7, incluido este, son aleatorios. Entonces, el texto que imprime es técnicamente no determinista.
Algunas posibles salidas incluyen:
fuente
JavaScript, 4 bytes
Una función que devuelve la fecha / hora actual. Creo que esto es lo más corto que será ...
Explicación
Como esto parece estar causando mucha confusión sobre por qué es válido, intentaré explicarlo.
En JavaScript, una entrada de función es válida si puede asignarse a una variable y llamarse como una función. Por ejemplo, esta función es una entrada válida:
Debido a que es una función que se puede asignar a una variable así:
Y luego corre
f()
tantas veces como sea necesario. Cada vez, devuelve la cadena de fecha / hora actual, que el OP ha determinado que no es determinista.Esta función de flecha ES6 también es válida:
Puede asignarse con
f=_=>Date()
, luego ejecutarsef()
como el otro.Ahora, aquí hay otra entrada válida:
¿Por qué? Porque al igual que las otras dos entradas, se puede asignar
f=Date
y luego llamar conf()
, devolviendo exactamente lo mismo que las otras dos. Intentalo:Mostrar fragmento de código
fuente
Date()
para invocar la función?Date
es una función que, cuando se llama sin entradas, produce la fecha / hora actual._=>Date()
es una entrada claramente válida que hace exactamente lo mismo, por lo queDate
es una entrada válida.Date
en la consola JavaScript del navegador produce una salida determinista, siempre produce esto:function Date() { [native code] }
. Probablemente quieras decirDate()
, 6 bytes.Bash (procps-ng), 2 bytes
$$
También es una solución.fuente
w
es más corto y también proviene de procps.Python 2, 11 bytes
fuente
id(0)
, sin embargo. :)Pyth, 2 bytes
Explicación:
Es que, cuando
O
tiene0
como argumento, simplemente devuelve un flotante aleatorio entre0
y1
, exclusivo.¡Hagámoslo por el gusto de hacerlo!
Además, parece que esto puede ser algo retro (gracias a 34718 / mbomb007):
Pyth, 2 bytes
Explicación:
Prueba esta versión boooooooooooooooring en su lugar
>:(
fuente
PowerShell,
42 bytes(tachado 4 todavía parece 4 )
Este es el alias para el
Get-Process
que se mostrará la lista de procesos actual como una tabla, incluidos los identificadores, la memoria privada, el tiempo de CPU, etc.Ejecútelo a través de algo como lo siguiente:
fuente
Zsh, 5 bytes
Imprime PID.
fuente
Commodore 64 Basic, 4 bytes
Sustitución de PETSCII:
|
=SHIFT+Y
La página cero de un Commodore 64 es un área de 256 bytes de memoria a la que se puede acceder más rápido que el resto de la RAM. En consecuencia, los programas (como el intérprete BASIC) lo utilizan para datos a los que se accede con frecuencia, y la CPU en sí almacena parte de su estado interno aquí. El contenido está sujeto a cambios sin previo aviso.
El programa BÁSICO anterior, sin golf, es
1 SYS 0
, es decir. transferir la ejecución a la ubicación de memoria 0. Esto comienza a ejecutar la página cero como código. Normalmente, cuando el intérprete BASIC comienza a ejecutar un programa, los primeros 16 bytes sonentonces
SYS 0
ejecutaría lo siguienteEl resultado general es generar la
READY.
solicitud BASIC y devolver el control al usuario. Sin embargo, la ubicación de memoria 0x00 es el registro de dirección de E / S de la CPU, y la ubicación de memoria 0x01 es el registro de dirección de E / S de la CPU. Si ha hecho algo que los cambia antes de ejecutar el programa, los resultados pueden ser impredecibles, desde la salida de basura hasta el bloqueo de la computadora (el 0x22 generalmente contenido en la ubicación de memoria 0x07, si se ejecuta como una instrucción, es unHALT
código de operación no documentado ) .Alternativamente, un programa impredecible más confiable es el de cuatro bytes
Imprime el tiempo transcurrido, en segundos (1/60 de segundo), desde el encendido del sistema.
fuente
05AB1E , 2 bytes
Pruébalo en línea!
Emite microsegundos actuales del reloj interno de la máquina ejecutora.
O podrías hacer algo como esto ...
05AB1E , 3 bytes
Pruébalo en línea!
Emite un alfabeto en minúsculas aleatoriamente barajado.
O esto también funciona:
Pruébalo en línea!
Emite una letra aleatoria del alfabeto.
O esto también funciona, y es más genial:
05AB1E , 9 bytes
Pruébalo en línea!
Emite aleatoriamente uno de estos:
fuente
BrainfuckX y políglota de script pequeño (etc.) - 2 bytes
? - Aleatorizar el valor en la celda actual
. - Enviar celda actual a stdout
fuente
C,
2521 bytesGracias a pseudonym117 por guardar 4 bytes.
Compilado con
gcc -o test lol.c
(sí, soy bastante original con el nombre de mi archivo ...), y ejecuté con./test
.Hace lo que dice: imprime el carácter correspondiente a la dirección de memoria de
i
, que se define en tiempo de ejecución, por lo que no debe ser determinista.fuente
&
ya que el valor de una variable en la pila no está definido? 2. Tiene un número constante de cosas en la pila, entonces, ¿la dirección de memoria esi
constante?i
se convierte en lo que normalmente se llamaargc
, así que tienes razón, siempre será 1 a menos que haya más argumentos. No puedo creer que no recordara eso. Todavía no estoy seguro de por qué cambia la ubicación, pero si funciona, funciona.putchar
conreturn
main(){printf("%d");}
Python 2, 29 bytes
Lamentablemente, no es la primera vez que escribo código en un teléfono inteligente.
fuente
Perl, 5 bytes
Emite el ID del proceso y una nueva línea.
fuente
Ruby , 3 bytes
Pruébalo en línea!
Imprime el ID del proceso.
fuente
Pyke, 1 byte
Pruébalo aquí!
Emite la hora actual
fuente
C89 con GCC / Clang, 20 bytes
La otra solución de C simplemente falla siempre que se construye con GCC o Clang. Esto, sin embargo.
Que se parece a:
¡Bastante basura no imprimible pero no es determinista!
fuente
puts
su dirección da 1 y cuando n es 2,puts
su dirección da 2). Agregar 1 a la dirección de n, que debería apuntar a un ancho de 4 bytesint
, da una dirección basura con un valor basura almacenado allí con un número muy cierto de bytes hasta el siguiente byte NUL. Este comportamiento es reproducible entre GCC y Clang y completamente más allá de mí. Creo que iré a preguntar en StackOverflow.n
que todavía se inicializa con lo que normalmente se llama,argc
que se encuentra0
en su caso de prueba general, por lo que con&n
,puts
obtiene un puntero bastante determinista a un byte '\ 0' que da como resultado una cadena vacía (suponiendo que el tamaño del puntero == tamaño entero y todas esas cosas) .&n+1
sin embargo, es la dirección de lo que normalmente se llamaargv
(al menos en las ABI que pasan parámetros en la pila en orden inverso en lugar de registros, y con una pila que crece de direcciones altas a bajas), lo que, suponiendo ASLR, debería ser un puntero diferente cada hora.PHP, 12 bytes
Emite una ID única
583f4da627ee3
basada en la hora actual en microsegundos. ↑fuente
<?=time();
<- 10 bytes.uniqid()
es 1'000'000 veces más indeterminado quetime()
;)Groovy, 9 bytes
{print{}}
Salidas:
Script1$_run_closure1@2c8ec01c
Debido a que genera la dirección de memoria del cierre, no es determinista.
fuente
groovy Script1.groovy
, me sale un error:Ambiguous expression could be either a parameterless closure expression or an isolated open code block;
. ¿Cómo uso esto?Emotinomicon, 15 bytes
Explicación:
fuente
Borland C en Windows, 12 bytes
Lo reescribí porque dicen que es posible usar una función. El compilador no ha verificado el argumento, así que compílelo; pero pone ver una dirección 'nadie' sabe y comienza a imprimir en qué punto esa dirección hasta encontrar el byte 0x00. Podría no estar bien si esa dirección no tiene memoria reservada para el programa, pero aquí imprima algo
fuente
argv
, ya que el compilador probablemente llamaría printf con el segundo argumento de main todavía en ese registro. Eso es exactamente lo que sucede con gcc6.2 dirigido a Linux: vea el código fuente + asm en el explorador del compilador Godbolt : main no toca RSI antescall printf
.argv
está en la pila, pero no en la parte superior. Sin embargo, su dirección se ve afectada por la pila ASLR, por lo que funciona. Esto funcionaría menos bien con-m32
. Probablemente siempre obtenga cero, ya quemain
tiene que mantener la pila alineada, por lo que la ranura de la pila sobre la cadena de formato puede ser una nueva memoria de pila que nunca se ha tocado (y probablemente siempre sea cero, ya que el núcleo evita pérdidas de información al poner a cero las páginas) de dar páginas de espacio de usuario llenas de datos antiguos).Baby Language , 0 bytes
No envié esto originalmente porque pensé que era posterior a la pregunta. Estaba equivocado; el lenguaje tenía un intérprete creado a tiempo. También es probablemente la solución menos interesante de 0 bytes que he visto (dado que se especifica un programa de 0 bytes para hacer exactamente lo que el programa pide, y no con el propósito de hacer trampa en los desafíos de golf).
Baby Language se especifica para ignorar el programa que se proporciona y hacer algo al azar. (El intérprete vinculado en la página de Esolang genera un programa BF legal aleatorio y lo ejecuta.) Parece un ajuste perfecto para este desafío.
fuente