Scrivi un programma o una funzione che stampi o restituisca una stringa di caratteri alfanumerici più un trattino basso, in qualsiasi ordine . Per essere precisi, devono essere visualizzati i seguenti caratteri, e non più :

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Quando si stampa su stdout, è consentito un ritorno a capo finale opzionale dopo loutput.

Costanti incorporate che contengono 9 o più dei caratteri precedenti non sono consentiti.


Vince il codice più breve in byte.

Questo è un sfida molto semplice, che credo genererà comunque alcune risposte interessanti.


Classifiche

Ecco uno Stack Snippet per generare sia una classifica regolare che una panoramica di vincitori per lingua.

Per assicurarti che la tua risposta venga visualizzata, inizia la tua risposta con un titolo, utilizzando il seguente modello di Markdown:

# Language Name, N bytes 

dove N è la dimensione della tua richiesta. Se migliori il tuo punteggio, puoi mantenere i vecchi punteggi nel titolo, cancellandoli. Ad esempio:

# Ruby, <s>104</s> <s>101</s> 96 bytes 

Se vuoi includere più numeri nellintestazione (ad es. Perché il tuo punteggio è la somma di due file o vuoi elencare linterprete contrassegna le penalità separatamente), assicurati che il punteggio effettivo sia l ultimo numero nellintestazione:

# Perl, 43 + 2 (-p flag) = 45 bytes 

Puoi anche impostare nome della lingua un link che verrà quindi visualizzato nello snippet della classifica:

# [><>](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> 

Commenti

Risposta

Convesso, 9 byte

Nuovo metodo! Inoltre, mi sono reso conto che è più o meno esattamente la stessa risposta di Luis “ma in Convex, ma lho trovato in modo indipendente.

"{,®\W"Oò 

Provalo online!

Spiegazione:

"{, Array of chars from NUL to "z ®\W" Regex to match non-word characters Oò Replace all matches with emtpy string 

Vecchia soluzione, 10 byte :

A,"[,_¬^"_ 

Provalo online!

Spiegazione:

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

Commenti

  • @ mbomb007 Sì, è equivalente al codice CJam A,'[,_el^'_
  • Di quale codifica si tratta?
  • @ CᴏɴᴏʀO ' Bʀɪᴇɴ CP-1252 o Windows-1252

Risposta

Ruby, 26 byte

I caratteri possono essere stampati in qualsiasi ordine? Non “t mente se lo faccio!

Provalo online!

$><<(?0..?z).grep(/\w/)*"" 

Risposta

Perl, 20 byte

Richiede -E senza costi aggiuntivi .

 say+a.._,A.._,_..9,_  

Quindi, la mia risposta originale (sotto) era un po troppo noiosa . Lunica cosa che sono riuscito a trovare è quanto sopra, che è esattamente lo stesso, ma sembra un po più confuso … È praticamente esattamente equivalente al seguente:

 say a..z,A..Z,0..9,_  

Mi piace @ msh210 “s suggerimenti nei commenti, ma “sono solo un po troppo lunghi!

Commenti

  • +1. Leggermente più interessanti ma più lunghi sono tutti questi , tutti i 27 byte: say grep/\w/,map chr,1..122 || say map{chr=~/\w/;$&}1..122 || say map{chr=~s/\W//r}1..122
  • @ msh210 è ancora possibile ' rimpicciolire ancora … Ho gestito un 25 però: say chr=~/\w/g for 1..255

Risposta

Cheddar, 31 27 byte

->97@"123+65@"91+48@"58+"_" 

Questo mostra bene loperatore @"

Non completato perché finalmente sono riuscito a correggere il @" Il bug era quello stava generando un intervallo Cheddar, non un intervallo JS, quindi non poteva funzionare correttamente


Spiegazione

Loperatore @" era progettato da @ CᴏɴᴏʀO “Bʀɪᴇɴ, e ciò che fa è generare un intervallo di stringhe da LHS a RHS.Quando viene utilizzato come operatore unario, restituisce il carattere al punto di codice specificato (come python “s chr)

Ungolfed

-> 97 @" 123 + 65 @" 91 + 48 @" 58 + "_" 

Risposta

brainfuck, 58 byte

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

Provalo online .

Inizializza il nastro a 3 · 2 n e funziona da 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 | ^  

Risposta

JavaScript (ES6), 62 byte

_=>String.fromCharCode(...Array(123).keys()).replace(/\W/g,"") 

Restituisce 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz, quindi solo 6 byte più corti di una funzione che restituisce la stringa letterale. Sì, fa schifo.

Commenti

  • Potresti provare a trovare una stringa per la quale btoa restituisce loutput richiesto.
  • @gcampbell 60! (60 fattoriali) le stringhe potrebbero richiedere del tempo per la ricerca …
  • Potresti semplicemente usare atob.
  • @gcampbell devo escludere stringhe non rappresentabili in qualche modo.
  • @gcampbell Si scopre che la versione btoa impiega comunque 62 byte: 45 per codificare 60 caratteri alfanumerici, 3 caratteri non codificati (inclusi _) e 14 per _=>atob("")+"".

Answer

Haskell, 38 bytes

"_":["a".."z"]++["A".."Z"]++["0".."9"] 

Niente da spiegare qui.

Commenti

  • domanda: qual è ' la differenza tra : e ++?
  • @Downgoat: ++ prende due stringhe e le concatena. : prende un carattere e una stringa e inserisce il carattere davanti alla stringa. Anche "_"++['a'..'z']... funziona, ma è più lungo di un byte.

Risposta

PowerShell v3 +, 35 33 byte

-join([char[]](1..127)-match"\w") 

Costruisce un array dinamico 1..127 , lo lancia come un array char. Viene inviato alloperatore -match che lavora sulla regex \w, che restituirà tutti gli elementi che corrispondono (cioè esattamente alfanumerico e trattino basso ). Incapsuliamo questi elementi dellarray in un -join per raggrupparlo come una stringa. Ciò è rimasto nella pipeline e loutput è implicito.

Commenti

  • Ehi, ' non è giusto. La mia soluzione è identica tranne per il fatto che ho iniziato a 0
  • @Joey Devo andare veloce. : D
  • Soprattutto per le soluzioni banali e ovvie, immagino 😉

Risposta

V, 27 byte

i1122ñYpñvHgJ|éidd@"Í× 

Provalo online!

Questa risposta è orribilmente contorta. Pubblicherò una spiegazione più tardi.

Hexdump:

00000000: 6916 1631 1b31 3232 f159 7001 f176 4867 i..1.122.Yp..vHg 00000010: 4a7c e969 6464 4022 1bcd d7 J|.idd@"... 

Spiegazione:

Leggibile:

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. 

Commenti

  • : D: D: D Il cheddar è legato alla lingua del golf!

Risposta

J, 30 29 28 byte

Un byte salvato grazie a randomra!

~.u:95,;48 65 97+i."*10,,~26 

Risultato:

 ~.u:95,;48 65 97+i."*10,,~26 _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

Spiegazione

Non fornirò una spiegazione di per sé , ma fornirò risultati intermedi.

 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 

Risposta

Haskell, 31 byte

 do(x,y)<-zip"aA0_""zZ9_";[x..y]  

Lespressione zip "aA0_" "zZ9_" fornisce lelenco degli endpoint [("a","z"),("A","Z"),("0","9"),("_","_")]. Il do notazione porta ogni (x,y) al \(x,y)->[x..y] inclusivo e concatena il risultato S. Grazie ad Anders Kaseorg per due byte con do invece di >>=.

Confronta con alternative:

 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 __"  

Commenti

  • do la notazione salva due byte: do(x,y)<-zip"aA0_""zZ9_";[x..y]

Answer

C, 50 byte

Chiama f() senza argomenti.

f(n){for(n=128;--n;)isalnum(n)|n==95&&putchar(n);} 

Stampe

zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210 

Commenti

  • isalnum(n)|n==95&&putchar(n)
  • Cè ' UB lì. Non hai ' passato gli argomenti richiesti.
  • @orlp – Hai utilizzato putc invece di putchar. putc si aspetta anche un flusso in cui scrivere, cosa che non hai ' passato.La funzione stessa funziona bene (prova a rimuovere completamente il tuo putc e funziona).
  • @owacoder Oops!
  • @QPaysTaxes che ' è sbagliato. If the number of arguments does not equal the number of parameters, the behavior is undefined. 6.5.2.2/6, vedere N1570 .

Risposta

/// , 63 byte

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Commenti

  • Comè la risposta valida? Sembra che ' stia violando le regole.
  • @nicael quale regola?
  • " Le costanti integrate che contengono 9 o più dei caratteri precedenti non sono consentite. " … Mi manca qualcosa di ovvio, @Leaky?
  • Sì, che questo ' t utilizzava costanti incorporate.
  • Ok, ma almeno questo è strano. Sicuramente OP non ' ti chiede di copiare e incollare la sequenza, che ' non è interessante.

Risposta

Python 3, 58 byte

print("_",*filter(str.isalnum,map(chr,range(123))),sep="") 

Un programma completo che stampa su STDOUT.

Loutput è: _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Come funziona

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 

Provalo su Ideone

Se le costanti stringa fossero consentite, quanto segue sarebbe stato di 45 byte:

from string import* print("_"+printable[:62]) 

Commenti

  • print('_'+*filter(str.isalnum,map(chr,range(123))))
  • @LeakyNun Questo genera un errore di sintassi. Ho pensato di fare qualcosa di simile con print('_',*filter(str.isalnum,map(chr,range(123)))), ma questo stampa gli spazi di separazione; lOP ha affermato nei commenti che ' … non sono ammessi spazi nelloutput '.
  • Python 2 può salvare un byte con questo approccio: print''.join(filter(str.isalnum,map(chr,range(123)))),'_'

Answer

Il mio primo tentativo di codegolf!

C #, 168 152 150 147 130 127 117 116 115 109 106 bytes

for(var a="0";a<"~";a++){Console.Write(System.Text.RegularExpressions.Regex.IsMatch(a+"","\\w")?a+"":"");} 

Grazie mille ad aloisdg, AstroDan, Leaky Nun e Kevin Lau, non a Kenny per tutto laiuto nei commenti.

Commenti

  • Benvenuto in PPCG! Sentiti libero di rimuovere tutto lo spazio! Controlla anche Suggerimenti per il golf in C # per alcuni suggerimenti.
  • Ottimo – mi ha fatto risparmiare 2 byte in più. ' sto davvero iniziando ad apprezzare questo codegolf 🙂
  • AFAIK, la classe di espressioni regolari \w copre i caratteri alfanumerici e anche _, che dovrebbe rendere "\\w" abbastanza valido per la tua funzione di corrispondenza regex.
  • Il tuo codice dovrebbe essere una funzione o un programma completo non una dichiarazione. Utilizza anche .NetFiddle per condividere una dimostrazione del tuo codice 🙂
  • " C # isn ' t il migliore per codegolf " Trovo che C # sia abbastanza divertente da programmare il golf. Penso che sia un ottimo linguaggio tradizionale con cui giocare. Se sei qui per vincere, perderai. Definisci il tuo obiettivo come imparare e divertirti e vincerai sempre.

Rispondi

Pure bash, 32

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

Ideone .

Risposta

Object Pascal, 85 83 73 byte

Semplice oggetto pascal che utilizza un insieme di caratteri. La scrittura di un programma completo invece di una procedura elimina 2 byte. La rimozione della parola chiave del programma consente di ridurre di 10 byte in più.

var c:char;begin for c in["a".."z","A".."Z","0".."9","_"]do write(c);end. 

Commenti

  • Lo sono sempre stato e probabilmente lo farò essere sempre confuso dalla classificazione esatta di Object Pascal. Turbo / Borland Pascal e FreePascal sono sicuramente felici senza la parola chiave program.
  • @manatwork Non lho fatto ' t sapere che. Stranamente, ora rende Pascal competitivo qui …
  • Il linguaggio con cui sono cresciuto. So che non è ancora morto …
  • @rexkogitans Sì, lho imparato a scuola, ma ' non ricorda niente di allora … ' sto giocando di nuovo con un po di programmazione adesso

Risposta

bash – 47 37 byte

man sh|egrep -o \\w|sort -u|tr -d \\n 

Loutput sul mio sistema è:

_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ 

Grazie a Digital Trauma per i suggerimenti utili.

Su alcuni sistemi potresti essere in grado di utilizzare ascii invece di man sh per salvare un byte.

Commenti

  • man sh|egrep -io _\|\\w|sort -u|tr -d \\n
  • @DigitalTrauma Grazie!Ho sperimentato e scoperto che \w corrisponde a _ ed è già senza distinzione tra maiuscole e minuscole, quindi potrebbe accorciare ancora di più.
  • env invece di man sh dovrebbe funzionare sulla maggior parte degli ambienti. Lo fa sul mio. $ env|egrep -o \\w|sort -u|tr -d \\n – > 0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.
  • Ecco ' no J. Colpa mia.

Risposta

PHP, 40 byte

 _0<?for(;$a++^9?$a^q:$a=A;)echo" $a"|$a;  

Demo online .

Commenti

  • +1 per eccellenza. Nota a margine: PHP 7.2 fornisce avvertimenti che menzionano che le versioni future genereranno errori per costanti non definite. 🙁

Risposta

Retina , 30 19 16 15 12 byte

Ho modificato il mio tentativo alfabetico originale per questa ultima versione. Ogni carattere viene stampato in un ciclo.

La prima riga è vuota.

 ; +T\`;w`w_

Provalo online

Risultato:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

Grazie a Leaky Nun per aver giocato a golf a 4 byte dal mio ultimo tentativo.

Commenti

  • I ' d dire che w conta come una costante contenente 9 o più dei caratteri richiesti. ' probabilmente dovrò espandere il lato destro e sostituire w a sinistra con o. Anche se c salvare un byte utilizzando EO invece di d poiché contengono solo 5 caratteri ciascuno.
  • @ mbomb007 w allinterno della fase di traslitterazione non ha nulla a che fare con regex. ' è una scorciatoia che si espande in un elenco dei 63 caratteri richiesti. Almeno ' chiedere a orlp in particolare di questo caso, poiché ' è abbastanza diverso dallutilizzo di \w in unespressione regolare.

Rispondi

MATL , 11 byte

7W:"\W"[]YX 

Provalo online!

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 

Commenti

  • 2 byte più brevi: 8W:'\w'XX
  • @DrGreenEggsandIronMan Grazie! Ma penso che le nuove righe non siano consentite come separatori. La sfida dice " una stringa di caratteri alfanumerici più un trattino basso … e non più "
  • Allora perché non è stato possibile ' eseguire 8W:'\w'XX! che ho provato ma ' non funziona
  • @DrGreenEggsandIronMan Ottima domanda! Lascia che ti risponda in chat così posso usare un po più di caratteri

Risposta

Brachylog , 25 byte

"_"w9yrcw"A":"Z"ycL@l:Lcw 

Viene stampato quanto segue in STDOUT:

_9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 

Spiegazione

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

Risposta

Dyalog APL , 18 byte

∊"\w"⎕S"&"⎕UCS⍳255 

stampa:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz 

Commenti

  • @user Le costanti incorporate che contengono 9 o più dei caratteri precedenti non sono consentite.

Risposta

Pyth, 13 12 byte

s:#"\w"0rk\| 

Provalo online!

Trova tutti i caratteri da U + 0000 a U + 007B che corrispondono alla regex /\w/.

O utput 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.

approccio alternativo: 15 byte

ssrMc4"0:A[a{_` 

Provalo online!

fondamentalmente genera gli intervalli semi-inclusi richiesti: 0-:, A-[, a-{, _-`.

Risposta

CJam , 15 14 11 byte

4 byte di sconto grazie a @FryAmTheEggman e @Dennis!

A,"[,_el^"_ 

Provalo online!

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 

Risposta

Brainfuck, 89 byte

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

Provalo qui

Dettagli:

+++++++++[>+++++>+<<-]>+++. 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 

Se avessi potuto commentare, avrei dovuto migliorare le risposte degli altri. Ma dal momento che non posso “t, potrei anche pubblicare il mio. Quando ho iniziato a scrivere questo, il BF più basso era lungo 96.

Risposta

F #, 50 59 byte

Seq.iter(printf"%c"<<char)(95::[48..57]@[65..90]@[97..122]) 

Risultato:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

Modifica: la prima volta ha mancato le cifre

Modifica2, ispirato a questa soluzione Haskell questo frammento di F # è 67 byte.

Seq.zip"aA0_""zZ9_"|>Seq.iter(fun(x,y)->Seq.iter(printf"%c")[x..y]) 

Risultato:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Risposta

Hexagony, 33

"A}_8_47<=">({a/[email protected]!\356);"); 

Espanso:

 " A } _ 8 _ 4 7 < = " > ( { a / _ x . @ . 9 ! \ 3 5 6 ) ; " ) ; . . . . 

Risultato:

aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_ 

Provalo online!

Nota che cè un carattere non stampabile 0x1A come primo byte del programma. Questo fa anche sembrare la prima riga dellesagono espanso un po spenta. Molte grazie a Martin per mostrandomi questo trucco, oltre a suggerirmi lalgoritmo per stampare t lalfabeto!

Stampa lalfabeto memorizzando a e A su due bordi di un esagono e il numero 26 sul bordo dellesagono che tocca lincastro tra le lettere. Questo assomiglia a questo:

A \ / a | 26 

Quindi inserisce un ciclo che stampa le lettere e poi le incrementa, quindi decrementa il numero. Dopo uniterazione avremmo:

B \ / b | 25 

E così via. Il codice lineare per linizializzazione è: 0x1A " A } a. Il codice lineare per i cicli al di fuori delle modifiche al flusso di controllo è: ; ) " ; ) { ( " =.

Una volta che il contatore raggiunge lo zero, seguiamo un percorso diverso per stampare i numeri e un sottolineare. Scritto linearmente questo è: x 3 5 6 8 4 7 9 ! ; { @. Questo sostituisce il valore del limite della memoria corrente con il numero 1203568479 (nota che il codice ASCII di x “è 120), che contiene tutte le cifre decimali. Stampiamo questo numero e poi usiamo una bella caratteristica di Hexagony: stampiamo il numero mod 256 come carattere ASCII. Questo è solo 95, o trattino basso.

Risposta

Brainfuck, 114 103 98 90 76 71 byte

Un altro banale (ora non -triviale), ma questa volta è BF!

Salvati 14 (!) byte grazie a @primo.

Salvati altri 4 byte grazie al suggerimento di @primo di generare il intervallo allindietro e ne ho salvato un altro incrementando prima di stampare per le lettere minuscole.

Nuovo (ricorrenza 4, 71):

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

Vecchio (valori, 114):

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

Vecchio (ricorrenza 1, 103):

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

Vecchio (ricorrenza 2, 90):

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

Vecchio (ricorrenza 3, 76):

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

Presuppone celle di wrapping a 8 bit e memoria di wrapping. Ho usato Provalo online .

Stampa tutto _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789

Innanzitutto, questa parte

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

inizializza il nastro con questi valori

[91, 70, 49, 21, 7] ^ 

Funziona perché la relazione di ricorrenza che ho modellato fondamentalmente è f(x) = 7 * (3 * x + 1), al contrario. Vedi @primo “s Hello, World! Answer per una spiegazione di cosa sia una relazione di ricorrenza.

Quindi è abbastanza semplice per modificare questi valori in valori utili. (e stampa il trattino basso)

Code: +++<--<-<-----<++++.+ Tape: [96, 65, 48, 26, 10] ^ 

Quindi, i cicli semplici utilizzano i valori per stampare il resto dei caratteri. Salvo 1 byte avendo un incremento prima della stampa.

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

Ho davvero bisogno di trovare una generazione di sequenza più breve.

Ho trovato una relazione di ricorrenza che sembra funzionare bene, ma potrebbe essercene una più breve con meno caccia e becco.

Ho usato un calcolatore di regressione lineare per trovare quale dovrebbe essere la relazione di ricorrenza lineare più breve possibile, quindi probabilmente dovrei trovare qualche altra formula se voglio migliorare.

@primo ha davvero migliorato molto la relazione di ricorrenza, grazie.

Commenti

  • Che ne dici di una costruzione al contrario? +[--[<+++++++>->+<]>-]
  • @primo Wow! Come funziona?
  • 3 non è uniforme quindi eseguirà un ciclo completo 256 volte. Terminando con >-], puoi essere certo che il termine finale sarà 1 (x7). In realtà, dovresti probabilmente iniziare con -, finisce molto più velocemente.

Risposta

Sesos , 17 byte

00000000: a854be 2cbc9e 71d597 14bc56 1ad99e 713b .T.,..q....V...q; 

Output

0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_ 

Provalo online! Seleziona Debug per vedere il codice binario generato.

Come funziona

Il file binario sopra è stato generato assemblando il seguente codice SASM.

 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.  

Commenti

  • Wow, stavo per pubblicare una soluzione molto simile alla tua .
  • Le menti simili pensano alla grande !
  • @LeakyNun Hm, un po in ritardo, ma sembra che il tuo sia 3 byte più corto …
  • @EriktheOutgolfer Sesos era codificato in modo meno efficiente. Entrambi i programmi sono lunghi 17 byte ora.
  • @Dennis Ah, beh, la cache TIO a volte può creare confusione.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *