Ecrire un programme ou une fonction qui imprime ou renvoie une chaîne de caractères alphanumériques plus le trait de soulignement, dans nimporte quel ordre . Pour être précis, les caractères suivants doivent être affichés, et pas plus :
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
Lors de limpression sur stdout, une nouvelle ligne facultative après votre sortie est autorisée.
Constantes intégrées qui contiennent 9 ou plusieurs des caractères ci-dessus ne sont pas autorisés.
Le code le plus court en octets lemporte.
Ceci est un défi très simple, qui, je pense, générera néanmoins des réponses intéressantes.
Classements
Voici un extrait de la pile pour générer à la fois un classement régulier et un aperçu des gagnants par langue.
Pour vous assurer que votre réponse saffiche, veuillez commencer votre réponse par un titre, en utilisant le modèle Markdown suivant:
# Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores dans le titre, en les frappant. Par exemple:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Si là vous voulez inclure plusieurs nombres dans votre en-tête (par exemple parce que votre score est la somme de deux fichiers ou que vous voulez lister linterpréteur marquer les pénalités séparément), assurez-vous que le score réel est le dernier numéro de len-tête:
# Perl, 43 + 2 (-p flag) = 45 bytes
Vous pouvez également faire le nom de langue un lien qui apparaîtra ensuite dans lextrait de classement:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
var QUESTION_ID=85666,OVERRIDE_USER=4162;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;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> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody> </tbody> </table> </div><div> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody> </tbody> </table> </div><table style="display: none"> <tbody> <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> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Commentaires
- Les commentaires ne sont pas destinés à une discussion approfondie; cette conversation a été déplacée vers le chat .
Réponse
Convexe, 9 octets
Nouvelle méthode! De plus, jai réalisé que cétait à peu près la même chose que la réponse de Luis « mais en Convexe, mais jai trouvé cela indépendamment.
"{,®\W"Oò
Explication:
"{, Array of chars from NUL to "z ®\W" Regex to match non-word characters Oò Replace all matches with emtpy string
Ancienne solution, 10 octets :
A,"[,_¬^"_
Explication:
A, 0-9 "[,_¬^ A-Za-z "_ _
Commentaires
Réponse
Ruby, 26 octets
Les caractères peuvent être imprimés dans nimporte quel ordre? Don « t ça me dérange si je le fais!
$><<(?0..?z).grep(/\w/)*""
Réponse
Perl, 20 octets
Nécessite -E
sans frais supplémentaires .
say+a.._,A.._,_..9,_
Donc, ma réponse initiale (ci-dessous) était un peu trop ennuyeuse . La seule chose que jai réussi à trouver est ce qui précède, cest exactement la même chose, mais cela semble un peu plus déroutant … Cest à peu près exactement équivalent à ce qui suit:
say a..z,A..Z,0..9,_
Jaime @ msh210 « s suggestions dans les commentaires, mais elles « sont juste un peu trop longues!
Commentaires
- +1. Un peu plus intéressant mais plus , tous les 27 octets:
say grep/\w/,map chr,1..122
||say map{chr=~/\w/;$&}1..122
||say map{chr=~s/\W//r}1..122
- @ msh210 Vous pouvez encore ' réduire cela davantage … Géré un 25 cependant:
say chr=~/\w/g for 1..255
…
Réponse
Cheddar, 31 27 octets
->97@"123+65@"91+48@"58+"_"
Cela présente bien lopérateur @"
Non terminé car jai finalement réussi à corriger le @"
. Le bogue était que il générait une gamme Cheddar et non une gamme JS, donc cela ne pouvait pas fonctionner correctement
Explication
Lopérateur @"
était conçu par @ CᴏɴᴏʀO « Bʀɪᴇɴ, et ce quil fait est de générer une plage de chaînes de LHS à RHS.Lorsquil est utilisé comme opérateur unaire, il renvoie le caractère au point de code donné (comme python « s chr
)
Ungolfed
-> 97 @" 123 + 65 @" 91 + 48 @" 58 + "_"
Réponse
brainfuck, 58 octets
+++[[<+>->++<]>]<<[-<->]<<-.+<<++[->>+.>+.<<<]<--[->>.+<<]
Initialise le bande sur 3 · 2 n , et fonctionne à partir de là.
+++[[<+>->++<]>] initialize the tape | 0 | 3 | 6 | 12 | 24 | 48 | 96 | 192 | 128 | 0 | 0 | ^ <<[-<->] subract 128 from 192 | 0 | 3 | 6 | 12 | 24 | 48 | 96 | 64 | 0 | 0 | 0 | ^ <<-.+<<++ ouput "_"; increment 24 twice | 0 | 3 | 6 | 12 | 26 | 48 | 96 | 64 | 0 | 0 | 0 | ^ [->>+.>+.<<<] output aAbBcC ~ zZ | 0 | 3 | 6 | 12 | 0 | 48 | 122 | 90 | 0 | 0 | 0 | ^ <--[->>.+<<] decrement 12 twice; output 0 ~ 9 | 0 | 3 | 6 | 0 | 0 | 58 | 122 | 90 | 0 | 0 | 0 | ^
Réponse
JavaScript (ES6), 62 octets
_=>String.fromCharCode(...Array(123).keys()).replace(/\W/g,"")
Renvoie 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
, donc seulement 6 octets plus courts quune fonction qui renvoie le littéral de chaîne. Oui, il sucks.
Commentaires
- Vous pouvez essayer de trouver une chaîne pour laquelle
btoa
renvoie la sortie requise. - @gcampbell 60! (60 chaînes factorielles) peuvent prendre du temps à rechercher …
- Vous pouvez simplement utiliser
atob
. - @gcampbell Je dois exclure en quelque sorte les chaînes non représentables.
- @gcampbell Il savère que la version btoa prend quand même 62 octets: 45 pour encoder 60 caractères alphanumériques, 3 caractères non codés (dont
_
) et 14 pour_=>atob("")+""
.
Réponse
Haskell, 38 octets
"_":["a".."z"]++["A".."Z"]++["0".."9"]
Rien à expliquer ici.
Commentaires
- question: quelle ' est la différence entre
:
et++
? - @Downgoat:
++
prend deux chaînes et les concatène.:
prend un caractère et une chaîne et place le caractère devant la chaîne."_"++['a'..'z']...
fonctionne également, mais est dun octet de plus.
Réponse
PowerShell v3 +, 35 33 octets
-join([char[]](1..127)-match"\w")
Construit un tableau dynamique 1..127
, le convertit en un tableau char
. Cela « est transmis à lopérateur -match
travaillant sur lexpression régulière \w
, qui renverra tous les éléments qui correspondent (cest-à-dire exactement alphanumérique et trait de soulignement ). Nous encapsulons ces éléments de tableau dans un -join
pour le regrouper en une seule chaîne. Cela reste sur le pipeline et la sortie est implicite.
Commentaires
- Hé, que ' nest pas juste. Ma propre solution est identique sauf que jai commencé à
0
… - @Joey Je dois aller vite. : D
- Surtout pour les solutions triviales et évidentes, je suppose 😉
Answer
V, 27 octets
i1122ñYpñvHgJ|éidd@"Í×
Cette réponse est horriblement compliquée. Je publierai une explication plus tard.
Hexdump:
00000000: 6916 1631 1b31 3232 f159 7001 f176 4867 i..1.122.Yp..vHg 00000010: 4a7c e969 6464 4022 1bcd d7 J|.idd@"...
Explication:
Lisible:
i<C-v><C-v>1<esc> "Insert the text "<C-v>1" "<C-v> means "literal" 122ñ ñ "122 times, Yp "Duplicate this line <C-a> "And increment the first number on this line vHgJ "Join every line together |éi "Insert an "i" at the beginning of this line dd "Delete this line @"<esc> "And execute it as V code. "That will generate every ascii value from 1-123 Í× "Now remove every non-word character.
Commentaires
- : D: D: D Le cheddar est lié à une langue de golf!
Réponse
J, 30 29 28 octets
Un octet enregistré grâce à randomra!
~.u:95,;48 65 97+i."*10,,~26
Sortie:
~.u:95,;48 65 97+i."*10,,~26 _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Explication
Je ne fournirai pas dexplication en soi , mais je fournirai des résultats intermédiaires.
10,,~26 10 26 26 i. b. 0 1 _ _ * b. 0 0 0 0 i."* b. 0 i."*2 3 4 0 1 0 0 0 1 2 0 0 1 2 3 i. 2 0 1 i. 3 0 1 2 i. 4 0 1 2 3 i."*10,,~26 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 + i."*10,,~26 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 48 65 97+i."*10,,~26 48 49 50 51 52 53 54 55 56 57 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 ;48 65 97+i."*10,,~26 48 49 50 51 52 53 54 55 56 57 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 95,;48 65 97+i."*10,,~26 95 48 49 50 51 52 53 54 55 56 57 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 ... u:95,;48 65 97+i."*10,,~26 _01234567890000000000000000ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ~.u:95,;48 65 97+i."*10,,~26 _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Réponse
Haskell, 31 octets
do(x,y)<-zip"aA0_""zZ9_";[x..y]
Lexpression zip "aA0_" "zZ9_"
donne la liste des points de terminaison [("a","z"),("A","Z"),("0","9"),("_","_")]
. Le do
prend chaque (x,y)
au \(x,y)->[x..y]
inclusif et concatène le résultat s. Merci à Anders Kaseorg pour deux octets avec do
au lieu de >>=
.
Comparez les alternatives:
do(x,y)<-zip"aA0_""zZ9_";[x..y] zip"aA0_""zZ9_">>= \(x,y)->[x..y] f(x,y)=[x..y];f=<<zip"aA0_""zZ9_" id=<<zipWith enumFromTo"aA0_""zZ9_" [c|(a,b)<-zip"aA0_""zZ9_",c<-[a..b]] f[x,y]=[x..y];f=<<words"az AZ 09 __"
Commentaires
-
do
enregistre deux octets:do(x,y)<-zip"aA0_""zZ9_";[x..y]
Réponse
C, 50 octets
Appelez f()
sans aucun argument.
f(n){for(n=128;--n;)isalnum(n)|n==95&&putchar(n);}
Impressions
zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210
Commentaires
-
isalnum(n)|n==95&&putchar(n)
- Il y a ' UB là. Vous navez ' transmis les arguments requis.
- @orlp – Vous avez utilisé
putc
au lieu deputchar
.putc
sattend à ce que lécriture dun flux soit également effectuée, ce que vous navez ' pas réussi.La fonction elle-même fonctionne correctement (essayez de supprimer complètement votreputc
, et cela fonctionne). - @owacoder Oups!
- @QPaysTaxes que ' est faux.
If the number of arguments does not equal the number of parameters, the behavior is undefined.
6.5.2.2/6, voir N1570 .
Réponse
/// , 63 octets
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
Commentaires
- Quelle est la réponse valable? Il semble que ' enfreigne les règles.
- @nicael quelle règle?
- " Les constantes intégrées contenant au moins 9 des caractères ci-dessus ne sont pas autorisées. " … Est-ce que je manque quelque chose dévident, @Leaky?
- Oui, que cela na ' pas utilisé de constantes intégrées.
- Ok, mais cest au moins bizarre. Certainement OP ne vous demande pas ' de copier-coller la séquence, ce ' nest pas intéressant.
Réponse
Python 3, 58 octets
print("_",*filter(str.isalnum,map(chr,range(123))),sep="")
Un programme complet qui imprime sur STDOUT.
Le résultat est: _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Comment ça marche
map(chr,range(123)) Yield an iterator containing all ascii characters with code-points in [0,122]... *filter(str.isalnum,...) ...keep characters if alphanumeric and unpack into tuple... print("_",...,sep="") ...add underscore and print all characters with no separating space
Si les constantes de chaîne étaient autorisées, ce qui suit aurait été de 45 octets:
from string import* print("_"+printable[:62])
Commentaires
-
print('_'+*filter(str.isalnum,map(chr,range(123))))
- @LeakyNun Cela génère une erreur de syntaxe. Jai pensé faire quelque chose de similaire avec
print('_',*filter(str.isalnum,map(chr,range(123))))
, mais cela imprime des espaces de séparation; lOP a déclaré dans les commentaires que ' … aucun espace nest autorisé dans la sortie du tout '. - Python 2 peut économiser un octet avec cette approche:
print''.join(filter(str.isalnum,map(chr,range(123)))),'_'
Réponse
Ma première tentative de codegolf!
C #, 168 152 150 147 130 127 117 116 115 109 106 octets
for(var a="0";a<"~";a++){Console.Write(System.Text.RegularExpressions.Regex.IsMatch(a+"","\\w")?a+"":"");}
Merci beaucoup à aloisdg, AstroDan, Leaky Nun et Kevin Lau – pas Kenny pour toute laide apportée dans les commentaires.
Commentaires
- Bienvenue dans PPCG! Nhésitez pas à supprimer tout lespace! Consultez également les Conseils pour jouer au golf en C # pour obtenir des conseils.
- Génial – ma fait gagner 2 octets de plus. Je ' commence vraiment à aimer ce codegolf 🙂
- AFAIK, la classe de regex
\w
couvre les alphanumériques et_
, ce qui devrait rendre"\\w"
suffisamment valide pour votre fonction de correspondance dexpression régulière. - Votre code doit être fonctionnel ou un programme complet pas une déclaration. Utilisez également .NetFiddle pour partager une démonstration de votre code 🙂
- " C # isn ' t le meilleur pour codegolf " Je trouve C # assez amusant pour coder le golf. Je pense que cest un excellent langage courant avec lequel jouer. Si vous êtes ici pour gagner, vous perdrez. Définissez votre objectif comme apprendre et passer un bon moment et vous gagnerez tout le temps.
Réponse
Réponse
Object Pascal, 85 83 73 octets
Un simple objet pascal utilisant un ensemble de caractères. Lécriture dun programme complet au lieu dune procédure rase 2 octets. La suppression du mot-clé du programme rase 10 octets supplémentaires.
var c:char;begin for c in["a".."z","A".."Z","0".."9","_"]do write(c);end.
Commentaires
- Jai toujours été et je le ferai probablement être toujours confondu par la classification exacte dObject Pascal. Turbo / Borland Pascal et FreePascal sont certainement heureux sans le mot clé
program
inutile. - @manatwork I didn ' t sachez que. Curieusement, cela rend maintenant Pascal compétitif ici …
- La langue avec laquelle jai grandi. Je sais quil nest pas encore mort …
- @rexkogitans Oui, je lai appris à lécole, mais je ne peux ' me souvenir de rien de lépoque … Je ' je joue à nouveau avec de la programmation
Answer
bash – 47 37 octets
man sh|egrep -o \\w|sort -u|tr -d \\n
La sortie sur mon système est:
_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
Merci à Digital Trauma pour ses suggestions utiles.
Sur certains systèmes, vous pourrez peut-être utiliser ascii
au lieu de man sh
pour enregistrer un octet.
Commentaires
-
man sh|egrep -io _\|\\w|sort -u|tr -d \\n
- @DigitalTrauma Merci!Expérimenté et découvert que
\w
correspond à_
et est déjà insensible à la casse, donc pourrait raccourcir encore plus. -
env
au lieu deman sh
devrait fonctionner sur la plupart des environnements. Il le fait sur le mien.$ env|egrep -o \\w|sort -u|tr -d \\n
– >0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
. - Là ' s aucun
J
. Mon mauvais.
Réponse
PHP, 40 octets
_0<?for(;$a++^9?$a^q:$a=A;)echo" $a"|$a;
Commentaires
- +1 pour lexcellence. Note latérale: PHP 7.2 génère des avertissements mentionnant que les futures versions généreront des erreurs pour les constantes non définies. 🙁
Réponse
Retina , 30 19 16 15 12 octets
Jai modifié mon tentative dalphabet original pour cette dernière version. Chaque caractère est imprimé en boucle.
La première ligne est vide.
; +T\`;w`w_
Résultat:
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Merci à Leaky Nun davoir joué au golf à 4 octets de ma dernière tentative.
Commentaires
- I ' d dire que
w
compte comme une constante contenant au moins 9 des caractères requis. Vous ' ll devra probablement agrandir le côté droit et remplacerw
sur la gauche paro
. Bien que vous c et enregistrez un octet en utilisantEO
au lieu ded
car ils ne contiennent que 5 caractères chacun. - @ mbomb007
w
à lintérieur de létape de translittération na rien à faire de regex. Cest ' un raccourci qui se développe en une liste des 63 caractères requis. Au moins, je ' demander à orlp ce cas spécifiquement, car ' est assez différent de lutilisation de\w
dans une expression régulière.
Réponse
MATL , 11 octets
7W:"\W"[]YX
7W % Push 2 raised to 7, i.e. 128 : % Range [1 2 ... 128] "\W" % Push string to be used as regex pattern [] % Push empty array YX % Regex replace. Uses (and consumes) three inputs: source text, regex pattern, % target text. The first input (source text) is implicitly converted to char. % So this replaces non-word characters by nothing. % Implicitly display
Commentaires
- 2 octets plus courts:
8W:'\w'XX
- @DrGreenEggsandIronMan Merci! Mais je pense que les nouvelles lignes ne sont pas autorisées comme séparateurs. Le défi dit " une chaîne de caractères alphanumériques plus un trait de soulignement … et plus de "
- Alors pourquoi ' t vous faites
8W:'\w'XX!
ce que jai essayé mais ne ' t fonctionne - @DrGreenEggsandIronMan Très bonne question! Laissez-moi vous répondre dans le chat afin que je puisse utiliser un peu plus de caractères
Répondre
Brachylog , 25 octets
"_"w9yrcw"A":"Z"ycL@l:Lcw
Ceci imprime ce qui suit dans STDOUT
:
_9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
Explication
"_"w Write "_" 9y Get the list [0:1:2:3:4:5:6:7:8:9] rcw Reverse it, concatenate into one number, write "A":"Z"y Get the list of all uppercase letters cL Concatenate into a single string L @l:Lcw Concatenate L to itself lowercased and write
Réponse
Dyalog APL , 18 octets
∊"\w"⎕S"&"⎕UCS⍳255
imprime:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
Commentaires
- @user Les constantes intégrées contenant au moins 9 des caractères ci-dessus ne sont pas autorisées.
Réponse
Pyth, 13 12 octets
s:#"\w"0rk\|
Recherche tous les caractères de U + 0000 à U + 007B qui correspondent à lexpression régulière /\w/
.
O utputs 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
.
approche alternative: 15 octets
ssrMc4"0:A[a{_`
génère essentiellement les plages semi-inclusives requises: 0-:, A-[, a-{, _-`
.
Réponse
CJam , 15 14 11 octets
4 octets de remise grâce à @FryAmTheEggman et @Dennis!
A,"[,_el^"_
A, e# Push range [0 1 ... 9] "[, e# Push range of chars from 0 to "Z" ("[" minus 1) _el e# Duplicate and convert to lowercase ^ e# Symmetric difference. This keeps letters only, both upper- and lower-case "_ e# Push "_". e# Implicitly display stack contents, without separators
Réponse
Brainfuck, 89 octets
+++++++++[>+++++>+<<-]>+++.>[<+.>-]<+++++++>>+++++++++++++[<+<+.+.>>-]<<+++++.+>[<+.+.>-]
Détails:
+++++++++[>+++++>+<<-]>+++. Goes to "0" while remembering a 9 for the 9 other numbers [<+.>-] Simply prints for the next 9 characters <+++++++> Moves it 7 space to the letters >+++++++++++++ Saves a 13 [<+<+.+.>>-] Prints 2 char at a time while making a second "13" space <<+++++.+> Moves 5, prints "_" and moves to the lowercases [<+.+.>-] And again the double print
Si javais pu commenter, je devrais améliorer les réponses des autres. Mais comme je ne peux pas « t, je ferais aussi bien de poster le mien. Au moment où jai commencé à écrire ceci, le BF le plus bas était de 96.
Réponse
F #, 50 59 octets
Seq.iter(printf"%c"<<char)(95::[48..57]@[65..90]@[97..122])
Résultat:
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Edit: jai manqué les chiffres la première fois
Edit2, inspiré de cette solution Haskell cet extrait de code F # est 67 octets.
Seq.zip"aA0_""zZ9_"|>Seq.iter(fun(x,y)->Seq.iter(printf"%c")[x..y])
Résultat:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
Réponse
Hexagony, 33
"A}_8_47<=">({a/[email protected]!\356);");
Développé:
" A } _ 8 _ 4 7 < = " > ( { a / _ x . @ . 9 ! \ 3 5 6 ) ; " ) ; . . . .
Résultat:
aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_
Notez quil y a un caractère non imprimable 0x1A
comme premier octet du programme. Cela rend également la première ligne de lhexagone étendu en quelque sorte désactivée. Merci beaucoup à Martin pour me montrant cette astuce, ainsi que pour suggérer lalgorithme pour imprimer t lalphabet!
Ceci imprime lalphabet en stockant a
et A
sur deux bords dun hexagone et le nombre 26 sur le bord de lhexagone qui touche le joint entre les lettres. Cela ressemble à quelque chose comme ceci:
A \ / a | 26
Ensuite, il entre dans une boucle qui imprime les lettres puis les incrémente, puis décrémente le nombre. Après une itération, nous aurions:
B \ / b | 25
Et ainsi de suite. Le code linéaire pour linitialisation est: 0x1A " A } a
. Le code linéaire pour les boucles en dehors des changements de flux de contrôle est: ; ) " ; ) { ( " =
.
Une fois que le compteur atteint zéro, nous suivons un chemin différent pour imprimer les nombres et un souligner. Écrit linéairement, cest: x 3 5 6 8 4 7 9 ! ; { @
. Cela remplace la valeur actuelle du bord de la mémoire par le nombre 1203568479 (notez que le code ASCII de x
« est 120), qui contient tous les chiffres décimaux. Nous imprimons ce numéro puis nous utilisons une fonctionnalité intéressante de Hexagony: nous imprimons le numéro mod 256 sous forme de caractère ASCII. Il se trouve que cest juste 95, ou un soulignement.
Réponse
Brainfuck, 114 103 98 90 76 71 octets
Un autre trivial (maintenant non -trivial), mais cette fois cest BF!
14 (!) octets sauvegardés grâce à @primo.
4 octets supplémentaires grâce à la suggestion de @primo de générer le en arrière, et jen ai sauvegardé une autre en incrémentant avant dimprimer pour les lettres minuscules.
Nouveau (récurrence 4, 71):
+[--[<+++++++>->+<]>-]<<+++<--<-<-----<++++.+>>>[-<<.+<+.>>>]>[-<<.+>>]
Ancien (valeurs, 114):
-[----->+<]>--->++++++++++>--[----->+<]>-------.++>----[---->+<]>++>++++[->++++++<]>++[-<<.+<<.+>>>>]<<<<<<[-<.+>]
Ancien (récurrence 1, 103):
++++++++++[[<+>->+<]>+++++++++++++++]<<[<]>>+>++++++++>>----->>-----.++<<<<<[->>>.+>>.+<<<<<]<[->>.+<<]
Ancien (récurrence 2, 90):
+++++++[[<+>->+<]>>+++[-<+++++++>]<]<<[<]>+++>-->->----->++++.++<<<[->>.+>.+<<<]<[->>.+<<]
Ancien (récurrence 3, 76):
+[[<+++++++>->+<]>+++]<<[<]>+++>-->->----->++++.++<<<[->>.+>.+<<<]<[->>.+<<]
Suppose des cellules dencapsulation 8 bits et de la mémoire dencapsulation. Jai utilisé Essayez-le en ligne .
Tout est imprimé _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789
Tout dabord, cette partie
+[--[<+++++++>->+<]>-]<<
initialise la bande avec ces valeurs
[91, 70, 49, 21, 7] ^
Cela fonctionne parce que la relation de récurrence que jai modélisée est essentiellement f(x) = 7 * (3 * x + 1)
, à lenvers. Voir @primo « s Hello, World! Answer pour une explication de ce quest une relation de récurrence.
Ensuite, cest assez simple pour changer ces valeurs en valeurs utiles. (et imprimez le trait de soulignement)
Code: +++<--<-<-----<++++.+ Tape: [96, 65, 48, 26, 10] ^
Ensuite, les boucles simples utilisent les valeurs pour imprimer le reste des caractères. Jéconomise 1 octet en ayant un incrément avant limpression.
>>>[-<<.+<+.>>>]>[-<<.+>>]
Jai vraiment besoin de trouver une génération de séquence plus courte.
Jai trouvé une relation de récurrence qui semble bien fonctionner, mais il peut y en avoir une plus courte avec moins de chasse et de picage.
Jai utilisé une calculatrice de régression linéaire pour trouver quelle devrait être la relation de récurrence linéaire la plus courte possible, donc je devrais probablement trouver une autre formule si je veux améliorer.
@primo a vraiment beaucoup amélioré la relation de récurrence, merci.
Commentaires
- Et une construction à lenvers?
+[--[<+++++++>->+<]>-]
- @primo Wow! Comment cela fonctionne-t-il?
- 3 est irrégulier, donc il fera une boucle complète de 256 fois. En terminant par
>-]
, vous pouvez être sûr que le terme final sera 1 (x7). En fait, vous devriez probablement commencer par-
, cela se termine beaucoup plus rapidement.
Réponse
Sesos , 17 octets
00000000: a854be 2cbc9e 71d597 14bc56 1ad99e 713b .T.,..q....V...q;
Sortie
0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_
Essayez-le en ligne! Vérifiez Debug pour voir le code binaire généré.
Comment ça marche
Le fichier binaire ci-dessus a été généré en assemblant le code SASM suivant.
add 48 ; Set cell 0 to 48 ("0"). fwd 1 ; Advance to cell 1. add 10 ; Set cell 1 to 10. jmp ; Set an entry marker and jump to the jnz instruction. rwd 1 ; Retrocede to cell 0. put ; Print its content (initially "0"). add 1 ; Increment cell 0 ("0" -> "1", etc.). fwd 1 ; Advance to cell 1. sub 1 ; Decrement cell 1. jnz ; While cell 1 in non-zero, jump to "rwd 1". ; This loop will print "0123456789". rwd 1 ; Retrocede to cell 0, which holds 48 + 10 = 58. add 7 ; Set cell 0 to 65 ("A"). fwd 1 ; Advance to cell 1. add 26 ; Set cell 1 to 26. jmp ; Set an entry marker and jump to the jnz instruction. rwd 1 ; Retrocede to cell 0. put ; Print its content (initially "A"). add 32 ; Add 32 to convert to lowercase ("A" -> "a", etc.). put ; Print the cell"s content. sub 31 ; Subtract 31 to switch to the next uppercase letter ("a" -> "B", etc.). fwd 1 ; Advance to cell 1. sub 1 ; Decrement cell 1. jnz ; While cell 1 in non-zero, jump to "rwd 1". ; This loop will print "AaBb...YyZz". rwd 1 ; Retrocede th cell 0, which holds 65 + 26 = 91. add 4 ; Set cell 0 to 95 ("_"). put ; Print its content.
Commentaires
- Wow, jétais sur le point de publier une solution très similaire à la vôtre .
- Les mêmes esprits pensent bien !
- @LeakyNun Hm, un peu tard, mais il semble que le vôtre est plus court de 3 octets …
- @EriktheOutgolfer Sesos était encodé de manière moins efficace. Les deux programmes font maintenant 17 octets.
- @Dennis Ah, eh bien, le cache TIO peut parfois être déroutant.
A,'[,_el^'_