La plupart des claviers d'ordinateur disposent d'un petit voyant à LED intégré, indiquant le mode d'entrée actuel, contrôlé par la touche CAPS LOCK.
Votre tâche est de le faire clignoter:
- Allume ça;
- Attendez 0,5 (+/- 0,1) seconde;
- Éteignez à nouveau.
Les séquences vidéo du clignotement de la LED sont très appréciées!
Règles
Vous pouvez faire clignoter une autre LED (par exemple, Scroll Lock, Num Lock, statut Wi-Fi, etc.), si vous le souhaitez, mais elle doit être physiquement située sur votre clavier;
S'il manque une
sleep
commande d' une seconde à votre langue , votre programme peut utiliser un délai de 1 seconde, avec une pénalité de +2 octets (c'est pour0.
);Votre programme doit clignoter au moins une fois. Ce qui se passe ensuite, vous le souhaitez, c’est-à-dire qu’il peut continuer à clignoter (dans ce cas, vous devez attendre le même délai avant de le rallumer), ou arrêter, etc.
Si le voyant choisi est allumé par défaut sur votre système, vous pouvez supposer qu'il a été explicitement désactivé (par exemple, manuellement) avant l'exécution du programme.
C'est code-golf , la réponse la plus courte en octets gagne.
Classement
var QUESTION_ID=110974,OVERRIDE_USER=61904;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&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(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.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(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\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:290px;float:left}table thead{font-weight:700}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="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>{{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:
Befunge (BEF32),
390334305 octetsC'est vraiment idiot, mais tant que ce site accepte la notion que l'interprète définit le langage , je pourrais aussi bien abuser de la règle. Ce code ne fonctionne que dans Win32 Befunge-93 Implementation de Kevin Vigor, version 1.01 (je pense que la seule version disponible). Vous pouvez télécharger le binaire ici .
Normalement, vous ne vous attendriez pas à ce que ce type de défi soit possible dans un Befunge, mais BEF32 est un port Win32 d’une très ancienne version de l’implémentation de référence, et à l’époque, il n’y avait pas de limite à la vérification de la
p
commande (put). Cela nous permet effectivement d’écrire dans n’importe quel emplacement de la mémoire, ce qui nous permet de forcer l’interprète à exécuter du code machine arbitraire.Maintenant, nous ne pouvons pas réellement modifier le code existant, car la section .text de l'exécutable n'aura pas les droits d'écriture. Cependant, nous pouvons amener le système à exécuter une adresse dans la section .data en écrivant cette adresse dans la
atexit
table de la bibliothèque d'exécution (du moins, je suppose que c'est bien ce que c'est). Le résultat final est que notre code est automatiquement exécuté à la sortie de l'interpréteur.Cela repose sur le fait que l'exécutable est chargé à une adresse fixe. Nous savons donc exactement où tout se trouve en mémoire. Cela ne fonctionnerait normalement pas si vous surchargiez les paramètres ASLR par défaut . Cela suppose également que la section .data soit exécutable, bien que l'attribut exécutable ne soit pas défini. Cela ne fonctionnera donc probablement pas si vous surchargez les paramètres DEP par défaut .
Le code lui-même est essentiellement une copie de la technique de Mego
keybd_event
traduite en code machine:Cette version du code continue de clignoter pour toujours (ou du moins jusqu'à ce que vous mettiez fin au processus), car il s'est avéré qu'il était plus facile de jouer au golf qu'un seul flash.
Et comme tout le monde publie des animations, voici une approximation de ce à quoi cela ressemble sur mon clavier.
la source
AutoHotkey,
29 à26 octetsMerci à @Dane pour avoir économisé 3 octets
J'ai initialement choisi
NumLock
parce que c'est un caractère plus court queCapsLock
. Le GIF ci-dessous reflète cette condition. C'est le même effet que le code modifié ci-dessus. J'aurais pu utiliser la méthodeVK90
ci-dessus pour que le GIF soit toujours précis, mais l'alignement sur le défi initial se sentait mieux.En l'honneur du commentaire de mbomb007 , voici un message de code morse sur 239 octets :
Voici les 30 premières secondes de ce message:
la source
send,{vk14}
de raser 3 octets? Bonus: vous feriez clignoter le CapsLock.GFA-Basic 3.51 (Atari ST),
61 56 4335 octetsCe code fera clignoter à tout jamais le voyant du lecteur de disquette au rythme requis (
PAUSE 25
= pause pendant 25/50 secondes).Ce serait probablement plus court en montage, mais je n'ai pas les outils appropriés à portée de main. Il s'agit de la taille de la liste GFA-Basic une fois enregistrée au format .LST et modifiée manuellement pour supprimer les blancs inutiles, renommer les instructions en chaînes plus courtes et les remplacer
CR+LF
par des simplesCR
. Notez qu'une finaleCR
est requise.S'étendra automatiquement à:
SPOKE
est un suralimentéPOKE
qui met d'abord le 68000 en mode superviseur , de sorte qu'il est autorisé à accéder aux zones de mémoire restreintes (ici: l' adresse d' écriture de registre de la puce audio YM2149, qui est également responsable de certaines autres E / S).Et oui: la LED est physiquement située sur le clavier ... je suppose.
Je n'ai pas accès à une vraie ST pour le moment, alors ce n'est qu'une maquette.
la source
poisson + ckb ,
5654 octetsClignote tout mon clavier en couleurs aléatoires, bien que le nombre de chiffres ne soit pas long de 6 chiffres, il est un peu limité.
Et oui, ce shell glob est potentiellement dangereux. Fonctionne sur ma machine ™
Bonus script, 8 mois plus tard: Cela passera par toutes les couleurs. Pas de golf.
la source
tee /d*/*/*/c*
? Des points de bonus pour le risque de forcer un ordinateur de mauvaise qualité dans le futur, lorsque celui-ci s’agrandit inévitablement en un élément important. (Variables EFI n'importe qui? Peut-être y aura-t-il quelque chose comme/dev/efi/vars/cpu_type
)Bash + Amixer, 45 Octets
Clignote la lumière muette sur mon clavier.
la source
a()(amixer set Master toggle;sleep .5;a)
ou enamixer set Master toggle;sleep .5;$0
tant que programme complet sont un peu plus courts.C (Windows), 79 octets
Explication
keybd_event
est une fonction API Windows (obsolète) pour envoyer un événement de clavier (keyup ou keydown).20
est le code de la touche Caps Lock,69
le code de balayage matériel (je ne sais pas ce que cela signifie), ainsi1
que keydown et3
keyup. Une pression sur une touche est simulée en envoyant un événement keydown immédiatement suivi d'un événement keyup. Un appui sur la touche est envoyé pour activer le verrouillage majuscule, puis le programme dort pendant 500 millisecondes, puis un autre appui est envoyé pour désactiver le verrouillage majuscule.Merci à Steadybox pour un tas d'octets sauvés
la source
int keybd_event();
?void keybd_event();
, et j'ai aussi besoinvoid Sleep();
dewindows.h
. Ces deux déclarations ensemble sont plus longues que l'include.#include<windows.h> k(n){keybd_event(20,69,n,0);}f(){k(1);k(3);Sleep(500);f();}
MATLAB,
14613670Merci à @Poke d' avoir supprimé 66 octets!
Ceci utilise la capacité de Matlab à appeler des classes Java. Le voyant de verrouillage numérique clignote en boucle en appuyant et en relâchant par programmation Num Lock.
La vidéo ou ça ne s'est pas passé .
la source
144
au lieu dejava.awt.event.KeyEvent.VK_NUM_LOCK
? CAPS_LOCK serait20
Code machine x86 pour PC (par exemple, fichier COM MS-DOS), 27 octets
Ce code machine (affiché ici avec un rendu Unicode du CP437 habituel du BIOS du PC) fera clignoter le voyant CAPS LOCK pour toujours sur un PC:
Le code a été créé pour ne contenir aucun octet NULL et peut donc être saisi au clavier (en utilisant l'astuce Alt + XXX pour les caractères étendus) afin de créer un fichier COM (par exemple, en utilisant la
COPY CON blink.com
commande sous MS-DOS, auquel cas le fichier de sortie devra contenir un 28 faux e octet, la^Z
caractère (EOF) nécessaire pour arrêter l'opération de copie).L’effet est obtenu en envoyant directement des commandes au contrôleur de clavier du PC (port 60h) pour définir l’état des voyants (en tant qu’effet secondaire, il est possible que les voyants Num Lock et Scroll Lock soient dans un état non clignotant aléatoire). Pour minimiser le nombre d’instructions, le minutage est obtenu en utilisant le compte à rebours géré par le BIOS à l’adresse
0040:0040
(il décrémente toutes les 54,925 ms, le cycle de clignotement étant de 494,3 ms, ce qui correspond à la marge autorisée) - ce compteur est normalement utilisé par le BIOS pour arrêter le moteur de la disquette; étant donné que le programme n'utilise pas le lecteur de disquette et que le code est supposé s'exécuter dans un environnement à tâche unique (par exemple, DOS), la lecture avec le minuteur du moteur de disquette n'est pas un problème.Le code fonctionne correctement sous MS-DOS (essayé avec VirtualBox, il devrait également fonctionner correctement sur du matériel réel, bien que je n’aie pas encore le temps de créer une clé USB amorçable MS-DOS à tester). Comme il ne repose sur aucune fonction du système d'exploitation, il peut même fonctionner sans le système d'exploitation (par exemple, en le plaçant dans le secteur de démarrage d'un disque). Il nécessite au moins un processeur 80186 pour s'exécuter, en raison des instructions "push immédiat" utilisées pour raccourcir le code de certains octets.
Code source de l'assemblage:
Décharge hexadécimale du code assemblé:
Voici le résultat de l'exécution sous MS-DOS dans VirtualBox (ne fonctionne pas avec DosBox, probablement parce que le contrôleur de clavier n'est pas complètement émulé):
(désolé pour la vidéo tremblante).
la source
copy con program.exe
: youtube.com/watch?v=iefuJ_jZAiQSmileBASIC,
3623 octetsClignote le voyant d'état du microphone. (vidéo à venir)
la source
Python2 - 108 octets
Est-ce que la touche majuscule. Fait intéressant, cela allume en fait uniquement la DEL sans affecter le clavier ni appuyer sur la touche. Vous pouvez changer le
4
à la fin2
pour faire numlock.6
fait les deux.la source
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1, in <module> IOError: [Errno 25] Inappropriate ioctl for device
macOS Sierra Version 10.12.1 (16B2555)
.shell + numlockx,
40 à35 octets[5 octets sauvés grâce à Ryan.]
Clignote continuellement le voyant NumLock sur les systèmes unix.
Un clignotement, 33 octets
la source
exec sh $0
au lieu dewhile
pour sauvegarder 5 octets, oush $0
si la création de processus pour toujours est considérée comme acceptable.watch -n0.5 numlockx toggle
pour 27 octets.numlockx toggle;sleep .5;!#
(27 octets) pour un clignotement unique.!#
est l'événement d'évolution de l'historique remplacé par tout ce qui est entré jusqu'à présent dans la ligne de commande.on
peut être omis. c'est le défaut.f=numlockx;$f;sleep .5;$f off
(29). Et (une version inférieure) en boucle utilisant la récursivité:g(){ f=numlockx;$f toggle;sleep .5;g;};g
(40).PowerShell , 71 octets
Remarques
la source
-Seconds
paramètre est unint
, il0.5
sera donc converti enint
, ce qui entraîne0
(arrondi à pair est le mode d'arrondi par défaut). Donc, vous ne dormez pas du tout (il y a un retard d'environ 1000 ticks ici, donc 10 µs). Règles de conversion et de liaison de paramètres relativement basiques dans PowerShell.VBS, 75 octets
Clignote de manière répétée sur la touche Verr Num, tout comme
numlock
un octet plus court quecapslock
.la source
C #,
215202198195185 octetsSans me rendre compte que j'ai fait le "même" code que cette réponse de @Mego , allez y faire un tour !.Économisé 13 octets grâce à @Metoniem
Économisé 10 octets grâce à @VisualMelon
Voici une version complète formatée montrant son fonctionnement:
Pour le changement amusant bonus
n++ & 2
àn+=2 & 2
et regarder le verrouillage numérique et verrouillage des majuscules clés alternatives en clignotant et hors tension. Je ne sais pas pourquoi cela se produit parce que cela ne devrait pas, mais ça a l'air "cool".la source
using System;
mais pour autant que je sache, vous n'utilisez rien directement à partir de l'espace de noms System? Je pense que vous pouvez enlever ça.keybd_event
méthode est en réalitévoid keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
. Je relâche je pourrais enlever lesUIntPtr
après la publication et les avoir commeint
et j'ai juste oublié de supprimer les utiliser.k
une, mais c'est clairement indéfini. Non cochée, mais je pense que vous feriez mieux d'avoir un seul appel à keybd_event dans une boucle non bridée, je devrais penser:for(int i=0;;...Sleep(250))keybd_event(i++&2)
ou quelque chose du genre .Java 7,
121118113 octetsUn simple appui et relâchement ne fait que déclencher l'état; ça ne cligne pas des yeux. Ainsi, nous pouvons aussi bien le boucler et il semble que la récursivité soit la manière la moins chère de le faire.
la source
()->for(;;){java.awt.Robot r=new java.awt.Robot();r.keyPress(20);r.delay(500);r.keyRelease(20);}
qui représente une économie de 18 octets en raison de la surcharge de déclaration lambda à 4 caractères.JavaScript, 82 octets
Le crédit va à @FinW fait, je viens de changer l'ancienne fonction en nouvelle fonction de flèche ES6 afin d'économiser quelques octets. Et parce que je n'ai pas assez de points pour commenter, j'ai écrit une nouvelle réponse.
Modifier - Supprimez les crochets pour enregistrer 2 octets supplémentaires.
Son code ressemblait à ceci
la source
()
par un autre, le caractère unique, par exemple_
ou en faisanto
un paramètre avec une valeur par défaut, comme suit:(o=new ActiveXObject("WScript.Shell"))=>
.Scala,
848378 octetsEdit: 1 octet enregistré grâce à @TheLethalCoder,
Il a suggéré d'utiliser
1>0
à la place detrue
.Edit 2: 5 octets enregistrés grâce à @ Corvus_192,
Il a suggéré d'utiliser la notation infixe et de supprimer les parenthèses après le constructeur
Ungolfed:
Port Scala standard de la réponse Java de @Poke . Tapez-le directement dans l'invite de l'interprète Scala.
Une vidéo montre le clignotement de ma DEL Caps Lock et de mon OSD pour démarrer!
la source
for(;;)
ouwhile(1>0)
ouwhile(1)
en Scala?r keyPress 20
est un octet plus court quer.keyPress(20)
. Il en va de même pour les autres appels de méthode, économisant au total 3 octets.Terminal Linux, 8 + 11 = 19 octets
Fichier
f
=1B 5B 33 71 1B 5B 30 71
native@shell:~$
pv f -q -L8
WAT?
Selon ECMA-48 ,
1B
commence la séquence d'échappement de contrôle terminal.Caps on =
1B 5B 33 71
, alors off =1B 5B 30 71
pv
vue d'avancementf
fichier-q
silencieux-L8
8 octets / s = délai de 0,5 secondeUsage
Préparer
Ctrl+ Alt+ F6passer à la console native
courir
pv f -q -L8
Ctrl+ Alt+ F7revenir
la source
Bash + Xdotool, 36 octets
Il suffit de l'exécuter dans un shell bash. Il doit être dans un environnement graphique. Boucle infinie d' ici . Num_Lock changé à 66 pour économiser 6 octets, et grâce à @Michael Kjörling pour 2 octets.
la source
:
un alias pour latrue
plupart des systèmes.while :;do sth;done
fait la même chose quewhile true;do sth;done
mais est plus court de trois octets.for((;;)){ sth;}
est encore plus courte, cependant.xdotool , 20 octets
Appuie deux fois sur la touche 66, également appelée Verrouillage majuscule , avec un délai de 500 ms entre les appuis.
Notez que xdotool est un langage de script. il peut être exécuté à partir d'un fichier et prend même en charge les shebangs. Depuis ses
exec
commande permet d’exécuter des programmes externes, il est capable de tester les additions et les primalités. Il est donc conforme à notre définition du langage de programmation.Essai
la source
Python utilisant pyautogui:
126 143 115103 octetsMerci à @ nedla2004 pour avoir économisé 12 octets
la source
while 1:keyDown('capslock');time.sleep(.5);keyUp('capslock')
, et vous pouvez changer la première ligne enfrom pyautogui import*
et la seconde enimport time
.import time;c='capslock' ...
time
complètement.from pyautogui import*; while 1:press('capslock',1,.5)
. ymmv. sur mon environnement, pyautogui a une incidence sur le cas que je tape, mais la lumière ne clignote pas.Bash, 31 octets
Fonctionne en X, sans accès root! (Si cela ne fonctionne pas pour vous, consultez la fonction init du code ci-dessous pour vous assurer que xkbcomp est configuré correctement)
Et un script bonus pour envoyer n'importe quel code Morse via majuscule (pas joué au golf):
Exemple:
blink "...././.-../.-../---//.--/---/.-./.-../-..///"
la source
Bash + setleds , 43 bytes
Assez simple. Utilise
setleds
pour basculer la lumière.la source
Bash, 103 octets
Doit être exécuté en tant que root.
Le clignotement de tout le rétroéclairage du clavier fonctionne-t-il? (vidéo à venir quand je rentre à la maison)
la source
Does flashing the entire keyboard backlight work?
Eh bien, si vous y réfléchissez, la surbrillance du clavier est un indicateur de la surbrillance du clavier, et il est définitivement "physiquement situé sur le clavier", alors, oui, je pense que ça compte.JavaScript, 90 octets
Cela
ActiveX
signifie que cela ne fonctionnera que sur IE (Edge ne le prend pas en charge, cependant). La touche NUMLOCK clignote car, comme pour les autres réponses, elle est plus courte que CAPSLOCK ou SCROLLLOCK.Ungolfed
la source
Bash, 33 octets
Cela suppose que Num-Lock soit activé avant son exécution. Changer
off
eton
autrement. Requiert lenumlockx
paquet évidemment;)Modifier:
Saw Alex Howansky a déjà posté cette solution, mais ne l’a pas marquée avec Bash et je viens de chercher le site pour "Bash".
la source
numlockx toggle;sleep .5;!#
(27 octets).!#
est l'événement qui étend à tout ce qui se trouve dans la ligne de commande.Fichier de commandes (avec l'aide de vbs), 74 + 2 = 76 octets
Partiellement basé sur la réponse de Trelzevir .
.vbs
est automatiquement inclus dansPATHEXT
.la source
Script Kotlin, 72 octets
Bien que ce ne soit pas le plus petit, c'est quand même assez bon. J'adore la course de kotlin pour certaines choses, et c'est l'une d'entre elles (plus petite que val r = java.awt.Robot () car nous n'avons pas besoin à la fois de r. Et de val r =. Pourtant, c'est plus long que MathLab)
Ungolfed:
la source
Python3,
55 à49 octetsMerci @NoOneIsHere pour -4 octets!
Cela inclut les paquets: pyautogui et les
time
modulesCode:
Merci @NoOneIsHere pour -4 octets!
La clé en action:
la source
while 1
et en le transformant en une ligne avec un point-virgule. (while 1:pyautogui.press("capslock");time.sleep(.5)
)import pyautogui
au début du programme et en modifiant le reste,while 1:pyautogui.press("capslock");time.sleep(.5)
vous pouvez en faire une réponse valide.import time
.import time
...VBA, 82 octets
VBE anonyme Fonction de fenêtre immédiate qui ne prend aucune entrée et gêne l'utilisateur indéfiniment. Dépendant de la fonction windows kernel32 qui est déclarée ci-dessous.
Déclaration de sommeil (Win-32)
Déclaration de veille (Win-64, + 8 octets)
Fonction de fenêtre immédiate VBE anonyme
Version légèrement plus amusante, 97 octets
Un ensemble de sous-programmes mutuellement récursifs qui dérangent indéfiniment l'utilisateur
Version discutable, 66 + 2 octets
Je ne sais pas si le fait de devoir déclarer une fonction à partir d'une dll compte comme une fonction intégrée. Dans le cas contraire, voici une version de 66 + 2 octets qui attend 1 seconde
la source