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 

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

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ò 

Essayez-le en ligne!

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,"[,_¬^"_ 

Essayez-le en ligne!

Explication:

A, 0-9 "[,_¬^ A-Za-z "_ _ 

Commentaires

  • @ mbomb007 Oui, cest équivalent au code CJam A,'[,_el^'_
  • De quel encodage sagit-il?
  • @ CᴏɴᴏʀO ' Bʀɪᴇɴ CP-1252 ou Windows-1252

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!

Essayez-le en ligne!

$><<(?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

 +++[[<+>->++<]>]<<[-<->]<<-.+<<++[->>+.>+.<<<]<--[->>.+<<]  

Essayez-le en ligne .

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@"Í× 

Essayez-le en ligne!

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 de putchar. 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 votre putc, 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 

Essayer sur Ideone

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

Pure bash, 32

 printf %s {a..z} {A..Z} {0..9} _  

Ideone .

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 de man 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;  

Démo en ligne .

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_

Essayez-le en ligne

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 remplacer w sur la gauche par o. Bien que vous c et enregistrez un octet en utilisant EO au lieu de d 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 

Essayez-le en ligne!

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\| 

Essayez-le en ligne!

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{_` 

Essayez-le en ligne!

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^"_ 

Essayez-le en ligne!

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

+++++++++[>+++++>+<<-]>+++.>[<+.>-]<+++++++>>+++++++++++++[<+<+.+.>>-]<<+++++.+>[<+.+.>-] 

Essayez-le ici

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_ 

Essayez-le en ligne!

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *