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
- I commenti non sono per discussioni estese; questa conversazione è stata spostata nella chat .
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ò
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,"[,_¬^"_
Spiegazione:
A, 0-9 "[,_¬^ A-Za-z "_ _
Commenti
Risposta
Ruby, 26 byte
I caratteri possono essere stampati in qualsiasi ordine? Non “t mente se lo faccio!
$><<(?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
+++[[<+>->++<]>]<<[-<->]<<-.+<<++[->>+.>+.<<<]<--[->>.+<<]
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@"Í×
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 diputchar
.putc
si aspetta anche un flusso in cui scrivere, cosa che non hai ' passato.La funzione stessa funziona bene (prova a rimuovere completamente il tuoputc
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
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
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 diman 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;
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_
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 sostituirew
a sinistra cono
. Anche se c salvare un byte utilizzandoEO
invece did
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
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\|
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{_`
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^"_
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
+++++++++[>+++++>+<<-]>+++.>[<+.>-]<+++++++>>+++++++++++++[<+<+.+.>>-]<<+++++.+>[<+.+.>-]
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_
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.
A,'[,_el^'_