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>
Réponses:
WinDbg, 1 octet
Hou la la! Jamais prévu une solution de 1 octet de WinDbg!
#
recherche un modèle de désassemblage, mais comme il n'y a pas de paramètre, il semble simplement renvoyer l'instruction d'assemblage suivante dans le fichier de vidage / processus auquel vous êtes attaché. Pas sûr de la logique pour définir l'adresse initiale, mais c'est le cas.Exemple de sortie:
la source
Java 7,
333027 octetsParce que Java.
la source
toString
dans une version précédente, mais le type de retourString
est plus long queint
. Enregistrez les octets! :]hashCode()
est une abréviation icithis.hashCode()
, elle ne fonctionnerait donc qu’en tant que méthode d’instance, pas de méthode statique. Dans ce cas, vous aurez besoin d'un code supplémentaire pour créer un objet dans l'appelant. C'est pertinent ici parce que c'est le code pour créer un objet responsable du non déterminisme.()->hashCode()
pour 14 octets. Just sayin ';)MATLAB, 3 octets
why
fournit des réponses à presque toutes les questions. Quelques exemples:C'est plus court que n'importe quelle
rand
fonction à laquelle je peux penser.la source
R, 1 octet
Envoie le code source de la fonction et une adresse de pointeur de mémoire qui change à chaque (nouveau) début de R.
la source
hein? , 0 octet
Un programme vide produit toujours une sortie. Les dernières lignes de l'interpréteur Python exécutées:
À la fin d'un programme, l'interpréteur Python imprimera
...
, puis créera / ouvrira un fichier texte appeléNotes.txt
et écrira une chaîne contenant l'heure actuelle.la source
Labyrinthe , 5 octets
Soit des impressions
0
ou rien (50% de chance chacune).Essayez-le en ligne!
Il existe un cas très spécifique dans lequel Labyrinth présente un comportement aléatoire:
Si toutes ces conditions sont remplies, la direction dans laquelle l'IP se déplace est choisie (uniformément) de manière aléatoire. La cerise sur le gâteau, c’est que ces trois conditions sont impossibles à remplir dans un flux de contrôle normal, ce qui signifie que vous ne devez pas modifier le code source au moment de l’exécution.
(Cela peut sembler un peu arbitraire, mais c’est en fait le comportement le plus cohérent que j’ai pu trouver pour ces conditions, car normalement la direction de l’IP dépend toujours de la direction précédente, de ses voisins et du signe du sommet de la pile, et cela semblait être un moyen élégant d’inclure une source d’aléatoire dans la langue.)
À l’aide des instructions de rotation du code source (
<^>v
), il est possible d’apporter l’IP dans cette situation. Un tel exemple est vu au sommet. L'IP pointe initialement vers l'est et commence au sommet. Lev
fait pivoter la colonne actuelle pour que nous obtenions:La propriété intellectuelle se déplace avec cette rotation de sorte qu'elle se trouve toujours sur le côté
v
est. Toutes les conditions sont remplies maintenant, de sorte que l'IP va monter ou descendre de façon aléatoire. Si cela monte, le programme se termine immédiatement. Si elle baisse, elle affiche un zéro, fait pivoter la colonne à nouveau, puis se termine.Il y a trois autres programmes qui en font usage (un qui imprime aussi
0
, un qui imprime00
et un qui imprime000
):(En réalité, il existe beaucoup plus que trois autres programmes, car vous pouvez également utiliser
.
au lieu d'!
imprimer des octets nuls, ou le remplacer"
par une grande variété de commandes, mais je pense qu'elles fonctionnent toutes sensiblement de la même manière.)la source
Befunge (-93 et -98), 3 octets
L'
?
exécution envoie dans une direction aléatoire. S'il monte ou descend, il revient en boucle?
et se relance. S'il passe à gauche, le programme tourne autour du@
et quitte donc sans rien imprimer. Si tout se passe bien, il imprime0
(le résultat obtenu.
lorsque la pile est vide), puis se termine sur le@
.la source
.
dans le programme que j'utilisais pour les tests, mais qui est devenu,
quand même une copie lorsque je l'ai copié sur PPCG. Fixé.Minecraft,
5 à4 octetsUtilisé en tapant dans la console d'un serveur ou un bloc de commande et en le mettant sous tension. Peut être exécuté à partir de l'interface de discussion en ajoutant un
/
.Habituellement, cela ne fait rien, mais s'il y a un joueur avec le nom d'utilisateur "8" sur le serveur, il recevra les permissions de l'opérateur. Notez que bien que Minecraft exige normalement que les noms d'utilisateur aient 3 caractères, certains comptes avec des noms plus courts ont été créés avant cette restriction.
La version qui peut être démontrée comme étant non déterministe sans l’un de ces noms d’utilisateur ou le risque de donner des autorisations d’opérateur à un utilisateur est la suivante:
Affiche un message à tout le monde, le message étant le nom d'utilisateur d'un lecteur aléatoire. La
op
commande ne prend qu'un littéral de chaîne, pas un script qui retourne une chaîne.La
me
commande ne fonctionnerait pas vraiment pour le premier exemple, elle s'afficherait"<your-username> 8"
. Lorsqu'il est exécuté à partir d'un bloc de commande, cela ne serait pas déterministe, car tous les blocs de commande ont le même "nom d'utilisateur", mais son exécution à partir de l'interface de discussion nécessiterait l'/
octet supplémentaire.la source
/
n'est pas inclus dans le nombre d'octets?help
un bloc de commande de 4 octets (qui ne nécessite pas de jeux piratés).sh + procps, 1 octet
A mon avis, c'est la solution la plus courte qui fonctionne via l'appel à des exécutables externes.
procps
est le paquet responsable de la communication d'informations sur l'état actuel du système (ps
et de ses amis) et est installé par défaut sur la plupart des distributions Linux;w
est la commande la plus courte qui y est nommée et renvoie des informations sur les utilisateurs connectés, mais également des informations non déterministes telles que la disponibilité.la source
Informer 7, 6 octets
Ce n'est pas un programme Inform 7 valide, car ni "x" ni "y" n'ont été définis. Donc, cela jette une erreur.
Cependant, certains messages d'erreur d'Inform 7, y compris celui-ci, sont aléatoires. Le texte imprimé est donc techniquement non déterministe.
Quelques sorties possibles incluent:
la source
JavaScript, 4 octets
Une fonction qui renvoie la date / heure actuelle. Je pense que c'est le plus court qu'il obtiendra ...
Explication
Étant donné que cela semble semer la confusion quant à la validité de sa validité, je vais tenter de vous expliquer.
En JavaScript, une entrée de fonction est valide si elle peut être affectée à une variable et appelée comme une fonction. Par exemple, cette fonction est une entrée valide:
Parce que c'est une fonction qui peut être assignée à une variable comme ceci:
Et puis courez avec
f()
autant de fois que nécessaire. À chaque fois, il retourne la chaîne de date / heure actuelle, qui a été jugée non déterministe par le PO.Cette fonction de flèche ES6 est également valide:
Il peut être assigné à
f=_=>Date()
, puis exécuté avecf()
comme l’autre.Maintenant, voici une autre entrée valide:
Pourquoi? Parce que, tout comme les deux autres entrées, il peut être assigné avec
f=Date
puis appelé avecf()
, retournant exactement la même chose que les deux autres. Essayez le:Afficher l'extrait de code
la source
Date()
pour invoquer la fonction?Date
est une fonction qui, lorsqu'elle est appelée sans entrées, produit la date / heure actuelle._=>Date()
est une entrée clairement valide qui fait exactement la même chose, doncDate
une entrée valide.Date
à la console JavaScript de mon navigateur produit une sortie déterministe, il produit toujours ceci:function Date() { [native code] }
. Vous voulez probablement direDate()
, 6 octets.Bash (procps-ng), 2 octets
$$
est aussi une solution.la source
w
est plus court et provient également de procps.Python 2, 11 octets
la source
id(0)
, cependant. :)Pyth, 2 octets
Explication:
C'est que, quand
O
a0
pour argument, il renvoie simplement un flottant aléatoire entre0
et1
, exclusif.Faisons-le juste pour le diable!
En outre, il semble que cela puisse être une sorte de rétro (grâce à 34718 / mbomb007):
Pyth, 2 octets
Explication:
Essayez plutôt cette version boooooooooooooooring
>:(
la source
PowerShell,
42 octets(4 barrés ressemblent encore à 4 )
C'est l'alias pour
Get-Process
lequel la liste des processus en cours sera affichée sous forme de tableau, y compris les descripteurs, la mémoire privée, le temps CPU, etc.Exécutez-le via quelque chose comme ce qui suit:
la source
Zsh, 5 octets
Imprime le PID.
la source
Commodore 64 Basic, 4 octets
PETSCII substitution:
|
=SHIFT+Y
La page zéro d'un Commodore 64 est une zone de 256 octets de mémoire, à laquelle on peut accéder plus rapidement que le reste de la RAM. Par conséquent, les programmes (tels que l'interpréteur BASIC) l'utilisent pour les données fréquemment consultées, et la CPU stocke ici une partie de son état interne. Le contenu est sujet à changement sans préavis.
Le programme BASIC ci-dessus, non-golfé, est
1 SYS 0
, c.-à-d. transférer l'exécution vers l'emplacement de mémoire 0. Ceci commence l'exécution de la page zéro en tant que code. Normalement, lorsque l’interpréteur BASIC commence à exécuter un programme, les 16 premiers octets sontdonc
SYS 0
exécuterait ce qui suitLe résultat global consiste à sortir l'
READY.
invite BASIC et à rendre le contrôle à l'utilisateur. Cependant, l'emplacement de mémoire 0x00 est le registre de direction des E / S de la CPU et l'emplacement de mémoire 0x01 est le registre des adresses d'E / S de la CPU. Si vous avez fait quelque chose qui les a modifiés avant d'exécuter le programme, les résultats peuvent être imprévisibles, allant du bourrage au blocage de l'ordinateur (le 0x22 généralement contenu dans l'emplacement mémoire 0x07, s'il est exécuté en tant qu'instruction, est unHALT
opcode non documenté ). .Sinon, un programme plus fiable et imprévisible est le programme sur quatre octets.
Imprime le temps écoulé, en 1 minute (1/60 de seconde), depuis la mise sous tension du système.
la source
05AB1E , 2 octets
Essayez-le en ligne!
Affiche le nombre actuel de microsecondes à partir de l'horloge interne de la machine d'exécution.
Ou vous pourriez faire quelque chose comme ça ...
05AB1E , 3 octets
Essayez-le en ligne!
Émet un alphabet de minuscule mélangé de manière aléatoire.
Ou cela fonctionne aussi:
Essayez-le en ligne!
Émet une lettre aléatoire de l'alphabet.
Ou cela fonctionne aussi, et est plus cool:
05AB1E , 9 octets
Essayez-le en ligne!
Sort aléatoirement l'un de ceux-ci:
la source
BrainfuckX et petit script (etc) polyglotte - 2 octets
? - Aléatoire la valeur dans la cellule en cours
. - Envoyer la cellule actuelle à la sortie standard
la source
C,
2521 octetsMerci à pseudonym117 d’avoir économisé 4 octets.
Compilé avec
gcc -o test lol.c
(ouais je suis assez original avec le nom de mon fichier ...), et couru avec./test
.Il fait ce qu'il dit: affiche le caractère correspondant à l'adresse mémoire de
i
, définie au moment de l'exécution, il doit donc être non déterministe.la source
&
car la valeur d’une variable de la pile n’est pas définie? 2. Vous avez un nombre constant d'éléments sur la pile, alors l'adresse de mémoire est-ellei
constante?i
devient ce qui est normalement appeléargc
, donc vous avez raison, ce sera toujours 1 à moins qu'il y ait plus d'arguments. Je ne peux pas croire que je ne m'en souvienne pas. Je ne sais toujours pas pourquoi l'emplacement change, mais si cela fonctionne, cela fonctionne.putchar
parreturn
main(){printf("%d");}
Python 2, 29 octets
Malheureusement, ce n'est pas la première fois que j'écris du code sur un smartphone.
la source
Perl, 5 octets
Affiche l'ID de processus et une nouvelle ligne.
la source
Ruby , 3 octets
Essayez-le en ligne!
Imprime l'ID du processus.
la source
Pyke, 1 octet
Essayez-le ici!
Affiche l'heure actuelle
la source
C89 avec GCC / Clang, 20 octets
L’autre solution C se segmente à chaque fois quand elle est construite avec GCC ou Clang. Ceci, cependant.
Qui ressemble à:
Beaucoup de courrier indésirable, mais non déterministe!
la source
puts
son adresse donne 1 et lorsque n est 2,puts
son adresse donne 2). L'ajout de 1 à l'adresse de n, qui doit pointer sur une largeur de 4 octetsint
, donne une adresse indésirable avec une valeur indésirable stockée avec un nombre d'octets très précis jusqu'au prochain octet NUL. Ce comportement est reproductible entre GCC et Clang et me dépasse complètement. Je pense que je vais aller demander sur StackOverflow.n
est toujours initialisé avec ceargc
qui est normalement appelé ce qui est0
dans votre cas de test général, donc avec&n
,puts
obtient un pointeur assez déterministe sur un octet '\ 0' résultant en une chaîne vide (en supposant que la taille du pointeur == la taille entière et tout le reste) .&n+1
Cependant, il s’agit de l’adresse de ce qui est normalement appeléargv
(au moins sur les ABI qui transmettent les paramètres de la pile dans l’ordre inverse des registres, et avec une pile qui passe des adresses hautes aux adresses basses), qui, en supposant que ASLR est différent, doit être un pointeur différent chaque fois. temps.PHP, 12 octets
Génère un ID unique
583f4da627ee3
basé sur l'heure actuelle en microsecondes. ↑la source
<?=time();
<- 10 octets.uniqid()
est 1'000'000 fois plus indéterminé quetime()
;)Groovy, 9 octets
{print{}}
Les sorties:
Script1$_run_closure1@2c8ec01c
Comme il sort l'adresse de la mémoire de la fermeture, il n'est pas déterministe.
la source
groovy Script1.groovy
, je reçois une erreur:Ambiguous expression could be either a parameterless closure expression or an isolated open code block;
. Comment puis-je l'utiliser?Emotinomicon, 15 octets
Explication:
la source
Borland C sous Windows, 12 octets
Je l'ai réécrit parce qu'ils disent qu'il est possible d'utiliser une fonction. Le compilateur n'a pas vérifié l'argument, alors compilez-le; mais met voir une adresse 'personne' sait et commence à imprimer quel point cette adresse jusqu'à trouver l'octet 0x00. Cela pourrait ne pas être correct si cette adresse est à court de mémoire réservée au programme mais ici imprimer quelque chose
la source
argv
, puisque le compilateur appellerait probablement printf avec le second argument de main toujours dans ce registre. C’est exactement ce qui se passe avec gcc6.2 ciblant Linux: Voir la source + asm sur l’explorateur du compilateur Godbolt : main ne touche pas à RSI auparavantcall printf
.argv
est sur la pile, mais pas au sommet. Son adresse est cependant affectée par la pile ASLR, donc cela fonctionne. Cela fonctionnerait moins bien avec-m32
. Vous obtiendrez probablement toujours zéro, car vous devezmain
garder la pile alignée de sorte que son emplacement au-dessus de la chaîne de format puisse être une nouvelle pile de mémoire qui n'a jamais été touchée (et qui est probablement toujours égale à zéro, car le noyau évite les fuites d'informations en mettant à zéro les pages de donner des pages d’espace utilisateur pleines d’anciennes données).Langue du bébé , 0 octet
Je ne l'ai pas soumis à l'origine car je pensais que cela postdatait la question. J'avais tort; la langue a eu un interprète créé dans le temps. C'est aussi probablement la solution 0 octet la moins trompeuse que j'ai vue (étant donné qu'un programme 0 octet est spécifié pour faire exactement ce que le programme demande, et non dans le but de tromper les défis du golf).
Baby Language est spécifié pour ignorer le programme qui lui est donné et faire quelque chose au hasard. (L'interprète lié sur la page Esolang génère un programme BF légal aléatoire et l'exécute.) Cela semble être une solution idéale pour ce défi.
la source