Kirjoita ohjelma tai toiminto, joka tulostaa tai palauttaa merkkijonon aakkosnumeerisista merkeistä plus alaviiva, missä tahansa järjestyksessä . Tarkkuuden vuoksi seuraavat merkit on annettava, eikä enempää :
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
Tulostettaessa stdout-tiedostoon valinnainen uusi rivinvaihto tulostuksen jälkeen on sallittu.
Sisäiset vakiot, jotka sisältävät 9 tai useampi yllä olevista merkeistä on kielletty.
Lyhyin tavuinen koodi voittaa.
Tämä on hyvin yksinkertainen haaste, joka mielestäni luo kuitenkin mielenkiintoisia vastauksia.
Tulostaulukot
Tässä on pino-katkelma sekä tavallisen tulostaulukon että yleiskatsauksen luomiseksi voittajista kielittäin.
Varmistaaksesi, että vastauksesi näkyy, aloita vastauksesi otsikolla seuraavan Markdown-mallin avulla:
# Language Name, N bytes
missä N
on lähettämäsi koko. Jos parannat pisteitä, voit pitää vanhat pisteet otsikossa yliviivaten ne läpi. Esimerkiksi:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jos haluat lisätä otsikkoon useita numeroita (esim. Koska pisteesi on kahden tiedoston summa tai haluat listata tulkin) merkitse rangaistukset erikseen), varmista, että todellinen tulos on otsikon viimeinen numero:
# Perl, 43 + 2 (-p flag) = 45 bytes
Voit myös kielen nimi on linkki, joka näkyy sitten tulostaulukon katkelmassa:
# [><>](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>
kommentit
- Kommentteja ei käytetä laajempaan keskusteluun; tämä keskustelu on siirretty chatiin .
Vastaa
Kupera, 9 tavua
Uusi menetelmä! Lisäksi tajusin, että onko se melkein täsmälleen sama kuin Luis ”vastaus, mutta Kupera, mutta keksin tämän itsenäisesti.
"{,®\W"Oò
Selitys:
"{, Array of chars from NUL to "z ®\W" Regex to match non-word characters Oò Replace all matches with emtpy string
vanha ratkaisu, 10 tavua :
A,"[,_¬^"_
Selitys:
A, 0-9 "[,_¬^ A-Za-z "_ _
Kommentit
Vastaa
Rubiini, 26 tavua
Merkkejä voidaan tulostaa missä tahansa järjestyksessä? Älä ”t Huomaa, jos teen!
$><<(?0..?z).grep(/\w/)*""
vastaus
Perl, 20 tavua
Edellyttää -E
ilman lisäkustannuksia .
say+a.._,A.._,_..9,_
Joten alkuperäinen vastaukseni (alla) oli hieman liian tylsää . Ainoa mitä olen onnistunut keksimään, on yllä oleva, joka on täsmälleen sama, mutta näyttää hieman hämmentävämmältä … Se vastaa melkein täsmälleen seuraavaa:
say a..z,A..Z,0..9,_
Pidän @ msh210 ”s ehdotuksia kommenteissa, mutta ne ovat vain liian pitkiä!
Kommentit
- +1. Hieman mielenkiintoisempi, mutta mikä tahansa näistä on pidempi kaikkia 27 tavua:
say grep/\w/,map chr,1..122
||say map{chr=~/\w/;$&}1..122
||say map{chr=~s/\W//r}1..122
- @ msh210 Voi silti ’ t kutistaa tätä enemmän … Hallinnoi 25: tä kuitenkin:
say chr=~/\w/g for 1..255
…
vastaus
Cheddar, 31 27 tavua
->97@"123+65@"91+48@"58+"_"
Tämä esittelee @"
-operaattorin hyvin
Keskeneräinen, koska sain vihdoin korjata @"
-operaattori. Virhe oli se se loi Cheddar-alueen, ei JS-alueen, joten se ei voinut toimia kunnolla
Selitys
Operaattori @"
oli jonka on suunnitellut @ CᴏɴᴏʀO ”Bʀɪᴇɴ, ja se tuottaa merkkijonoalueen LHS: stä RHS: ään.Kun käytetään unary-operaattorina, se palauttaa merkin annettuun koodipisteeseen (kuten python ”s chr
)
Ungolfed
-> 97 @" 123 + 65 @" 91 + 48 @" 58 + "_"
vastaus
aivoriihi, 58 tavua
+++[[<+>->++<]>]<<[-<->]<<-.+<<++[->>+.>+.<<<]<--[->>.+<<]
Alustaa teippi 3 · 2 n ja toimii sieltä.
+++[[<+>->++<]>] 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 | ^
vastaus
JavaScript (ES6), 62 tavua
_=>String.fromCharCode(...Array(123).keys()).replace(/\W/g,"")
Palauttaa 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
, joten vain 6 tavua lyhyempi kuin funktio, joka palauttaa merkkijonon kirjaimen. Kyllä, se perseestä.
Kommentit
- Voit yrittää löytää merkkijonon, jolle
btoa
palauttaa vaaditun tuloksen. - @gcampbell 60! (60 tekijän) merkkijonoa voi viedä jonkin aikaa …
- Voit käyttää vain
atob
. - @gcampbell Minun on jättää jotenkin edustamattomat merkkijonot.
- @gcampbell Kävi ilmi, että btoa-versio vie kuitenkin 62 tavua: 45 koodaa 60 aakkosnumeeria, 3 koodaamatonta merkkiä (mukaan lukien
_
) ja 14 ryhmälle_=>atob("")+""
.
Vastaa
Haskell, 38 tavua
"_":["a".."z"]++["A".."Z"]++["0".."9"]
Täällä ei ole mitään selitettävää.
Kommentit
- kysymys: mikä ’ s ero
:
ja++
? - @Downgoat:
++
ottaa kaksi merkkijonoa ja yhdistää ne.:
ottaa merkin ja merkkijonon ja laittaa merkin merkkijonon eteen."_"++['a'..'z']...
toimii myös, mutta on yksi tavu pidempi.
Vastaa
PowerShell v3 +, 35 33 tavua
-join([char[]](1..127)-match"\w")
Rakentaa dynaamisen taulukon 1..127
, heittää sen char
-taulukoksi. Tämä syötetään -match
-operaattorille, joka työskentelee regex-koodin \w
kanssa, joka palauttaa kaikki vastaavat elementit (ts. Täsmälleen aakkosnumeeriset ja alaviivat ). Kapseloimme nämä taulukkoelementit -join
-sarjaan, jotta se niputettaisiin yhdeksi merkkijonoksi. Putkistoon ja ulostuloon jäävät implisiittiset. / h3>
- Hei, ’ ei ole reilua. Oma ratkaisuni on identtinen, paitsi että aloitin kohdasta
0
… - @Joey Gotta menee nopeasti. : D
- Erityisesti triviaalien ja ilmeisten ratkaisujen osalta luulisin 😉
Vastaa
V, 27 tavua
i1122ñYpñvHgJ|éidd@"Í×
Tämä vastaus on hirvittävän sekava. Lähetän selityksen myöhemmin.
Hexdump:
00000000: 6916 1631 1b31 3232 f159 7001 f176 4867 i..1.122.Yp..vHg 00000010: 4a7c e969 6464 4022 1bcd d7 J|.idd@"...
Selitys:
Luettavissa:
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.
Kommentit
- : D: D: D Cheddar on sidottu golf-langalla!
vastaus
J, 30 29 28 tavua
Tallennettu tavu randomran ansiosta!
~.u:95,;48 65 97+i."*10,,~26
Tulos:
~.u:95,;48 65 97+i."*10,,~26 _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Selitys
En aio antaa selitystä sinänsä , mutta toimitan välituloksia.
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
vastaus
Haskell, 31 tavua
do(x,y)<-zip"aA0_""zZ9_";[x..y]
Lauseke zip "aA0_" "zZ9_"
antaa luettelon päätepisteistä [("a","z"),("A","Z"),("0","9"),("_","_")]
. div id = ”77c0d2706f”>
merkinnät vievät kukin (x,y)
osallisuuteen \(x,y)->[x..y]
ja yhdistää tuloksen s. Kiitos Anders Kaseorgille kahdesta tavusta, joissa do
>>=
: n sijaan.
Vertaa vaihtoehtoihin:
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 __"
kommentit
-
do
merkintätapa tallentaa kaksi tavua:do(x,y)<-zip"aA0_""zZ9_";[x..y]
vastaus
C, 50 tavua
Soita f()
ilman argumentteja.
f(n){for(n=128;--n;)isalnum(n)|n==95&&putchar(n);}
Tulostaa
zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210
Kommentit
-
isalnum(n)|n==95&&putchar(n)
- Siellä on ’ s UB. Et antanut ’ et välittää vaadittuja argumentteja.
- @orlp – Käytit
putc
-kohtaaputchar
.putc
odottaa myös virran kirjoittavan, johon et ’ ohittanut.Itse toiminto toimii hyvin (yritä poistaaputc
kokonaan, ja se toimii). - @owacoder Hups!
- @QPaysTaxes that ’ väärin.
If the number of arguments does not equal the number of parameters, the behavior is undefined.
6.5.2.2/6, katso N1570 .
Vastaa
/// , 63 tavua
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
Kommentit
- Kuinka se on oikea vastaus? Näyttää siltä, että se ’ rikkoo sääntöjä.
- @nicael mikä sääntö?
- ” Sisäänrakennetut vakiot, jotka sisältävät vähintään 9 yllä olevista merkeistä, ovat kiellettyjä. ” … Puuttuuko minulta jotain ilmeistä, @Leaky?
- Kyllä, että tämä ei ’ t käyttänyt sisäänrakennettuja vakioita.
- Ok, mutta tämä on ainakin outoa. Ehdottomasti OP ei ’ t pyydä sinua kopioimaan ja liittämään sekvenssi, joka ’ ei ole mielenkiintoinen.
vastaus
Python 3, 58 tavua
print("_",*filter(str.isalnum,map(chr,range(123))),sep="")
Koko ohjelma joka tulostaa tiedostoon STDOUT.
Lähtö on: _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Kuinka se toimii
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
Jos merkkijonovakiot sallitaan, seuraava olisi ollut 45 tavua:
from string import* print("_"+printable[:62])
kommentit
-
print('_'+*filter(str.isalnum,map(chr,range(123))))
- @LeakyNun Se heittää syntaksivirheen. Ajattelin tehdä jotain vastaavaa
print('_',*filter(str.isalnum,map(chr,range(123))))
kanssa, mutta se tulostaa erottavat välilyönnit; OP sanoi kommenteissa, että ’ … ulostulossa ei ole lainkaan välilyöntejä ’. - Python 2 voi tallentaa yhden tavun tällä lähestymistavalla:
print''.join(filter(str.isalnum,map(chr,range(123)))),'_'
Vastaa
Ensimmäinen yritys koodegolfiin!
C #, 168 152 150 147 130 127 117 116 115 109 106 tavut
for(var a="0";a<"~";a++){Console.Write(System.Text.RegularExpressions.Regex.IsMatch(a+"","\\w")?a+"":"");}
Kiitos paljon aloisdgille, AstroDanille, Leaky Nunille ja Kevin Laulle – ei Kennylle kaikesta kommenteissa annetusta avusta.
Kommentit
- Tervetuloa PPCG: hen! Poista vapaasti koko tila! Katso myös vinkkejä vinkkejä golfiin C # : ssä.
- Hienoa – säästin 2 tavua enemmän. Minusta ’ olen todella alkanut pitää tästä koodegolfista 🙂
- AFAIK,
\w
regex-luokka kattaa aakkosnumeerit ja myös_
, jonka tulisi tehdä"\\w"
tarpeeksi kelvolliseksi regex-ottelutoiminnollesi. - Koodisi on oltava funktio tai koko ohjelma, ei lausunto. Käytä myös .NetFiddle-koodin esittelyä 🙂
- ” C # ei ole ’ t paras codegolf ” Minusta C # on tarpeeksi hauskaa koodata golfia. Mielestäni se on hieno valtavirran kieli leikkiä. Jos olet täällä voittaaksesi, menetät. Määritä tavoitteeksi oppiminen ja hauskanpito, niin voitat aina.
Vastaa
Vastaa
Object Pascal, 85 83 73 tavua
Pelkkä objektin pascal käyttämällä merkkisarjaa. Koko ohjelman kirjoittaminen menettelyn sijaan ajaa pois 2 tavua. Ohjelman avainsanan poistaminen ajelee vielä 10 tavua.
var c:char;begin for c in["a".."z","A".."Z","0".."9","_"]do write(c);end.
Kommentit
- Olen aina ollut ja luultavasti aion sekoita aina Object Pascalin tarkka luokitus. Turbo / Borland Pascal ja FreePascal ovat varmasti onnellisia ilman turhaa
program
-avainsanaa. - @manatwork En did ’ t tietää että. Kummallista kyllä, se tekee paskalista kilpailukykyisen täällä …
- Kieli, jolla vartuin. Tiedän, että se ei ole vielä kuollut …
- @rexkogitans Joo, opin sen koulussa, mutta en voi ’ muistaa mitään sitten …
Pelaan nyt jonkin verran ohjelmointia uudelleen
Vastaa
bash – 47 37 tavua
man sh|egrep -o \\w|sort -u|tr -d \\n
Järjestelmälähtö on:
_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
Kiitos Digital Traumalle hyödyllisistä ehdotuksista.
Joissakin järjestelmissä saatat pystyä käyttämään ascii
-kohtaa tavun tallentamiseksi.
Kommentit
-
man sh|egrep -io _\|\\w|sort -u|tr -d \\n
- @DigitalTrauma Kiitos!Kokeiltu ja selvitetty
\w
vastaa_
ja on jo erottamaton kirjaimista, joten se voi lyhentää vielä enemmän. -
env
man sh
sijaan pitäisi toimia useimmissa ympäristöissä. Se tekee minun.$ env|egrep -o \\w|sort -u|tr -d \\n
– >0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
. - Siellä ’ s ei
J
. Minun huono.
Vastaa
PHP, 40 tavua
_0<?for(;$a++^9?$a^q:$a=A;)echo" $a"|$a;
Kommentit
- +1 huippuosaamista varten. Lisähuomautus: PHP 7.2 antaa varoituksia, joissa mainitaan, että tulevat versiot heittävät virheitä määrittelemättömille vakioille. 🙁
vastaus
verkkokalvo , 30 19 16 15 12 tavua
Muutin alkuperäinen aakkosyritys tälle uusimmalle versiolle. Jokainen merkki tulostetaan silmukkaan.
Ensimmäinen rivi on tyhjä.
; +T\`;w`w_
Tulos:
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Kiitos Leaky Nunille 4 tavun golfaamisesta viimeisimmältä yritykseltäni.
Kommentit
- I ’ d sanotaan, että
w
lasketaan vakiona, joka sisältää vähintään 9 vaadittua merkkiä. Sinä ’ ll on todennäköisesti laajennettava oikeaa kättä ja korvattavaw
vasemmallao
: llä. tallenna tavu käyttämälläEO
-tunnustad
-kohdan sijaan, koska niissä on vain 5 merkkiä. - @ mbomb007
w
translitterointivaiheessa ei ole mitään tekemistä regexin kanssa. Se ’ on lyhenne, joka laajenee tarvittavien 63 merkin luetteloksi. Ainakin ’ kysyin orlp: lta tätä tapausta, koska se ’ on aivan erilainen kuin\w
regexissä.
Vastaus
MATL , 11 tavua
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
Kommentit
- 2 tavua lyhyempi:
8W:'\w'XX
- @DrGreenEggsandIronMan Kiitos! Uskon, että rivinvaihtoa ei sallita erottimena. Haaste kertoo ” merkkijonon aakkosnumeerisia merkkejä plus alaviivan … eikä enempää ”
- Joten miksi ei voinut ’ t tehdä
8W:'\w'XX!
jota yritin, mutta ei toimi ’ ei toimi - @DrGreenEggsandIronMan Erittäin hyvä kysymys! Anna minun vastata sinulle chatissa , jotta voin käyttää hieman enemmän merkkejä
Vastaa
Brachylog , 25 tavua
"_"w9yrcw"A":"Z"ycL@l:Lcw
Tämä tulostaa seuraavat STDOUT
:
_9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
Selitys
"_"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
vastaus
Dyalog APL , 18 tavut
∊"\w"⎕S"&"⎕UCS⍳255
tulostaa:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
Kommentit
- @user Sisäänrakennetut vakiot, jotka sisältävät vähintään 9 edellä mainittua merkkiä, on kielletty.
Vastaa
Pyth, 13 12 tavua
s:#"\w"0rk\|
Löytää kaikki U + 0000 – U + 007B -merkit, jotka vastaavat regexiä /\w/
.
O utputs 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
.
vaihtoehtoinen lähestymistapa: 15 tavua
ssrMc4"0:A[a{_`
Luo periaatteessa tarvittavat puolitiedot sisältävät alueet: 0-:, A-[, a-{, _-`
.
vastaus
CJam , 15 14 11 tavua
4 tavua pois @FryAmTheEggmanin ja @Dennisn ansiosta!
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
Vastaa
Brainfuck, 89 tavua
+++++++++[>+++++>+<<-]>+++.>[<+.>-]<+++++++>>+++++++++++++[<+<+.+.>>-]<<+++++.+>[<+.+.>-]
Tiedot:
+++++++++[>+++++>+<<-]>+++. 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
Jos olisin voinut kommentoida, minun olisi parannettava muita vastauksia. Mutta koska en voi ”t, voisin yhtä hyvin lähettää omani. Aloittaessani tämän kirjoittamisen alin BF oli 96 pitkä.
Vastaus
F #, 50 59 tavua
Seq.iter(printf"%c"<<char)(95::[48..57]@[65..90]@[97..122])
Tulos:
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Muokkaa: jätti numerot ensimmäisen kerran väliin
Edit2, innoittamana tästä Haskell-ratkaisusta , tämä F # -katkelma on 67 tavua.
Seq.zip"aA0_""zZ9_"|>Seq.iter(fun(x,y)->Seq.iter(printf"%c")[x..y])
Tulos:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
Vastaa
kuusikulmio, 33
"A}_8_47<=">({a/[email protected]!\356);");
Laajennettu:
" A } _ 8 _ 4 7 < = " > ( { a / _ x . @ . 9 ! \ 3 5 6 ) ; " ) ; . . . .
Tulos:
aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_
Huomaa, että ohjelman ensimmäisenä tavuna on tulostamaton merkki 0x1A
. Tämä tekee myös laajennetun kuusikulmion ensimmäisen rivin näyttävän poissaolevalta. Paljon kiitoksia Martinille näytetään minulle tämä temppu, samoin kuin t-tulostuksen algoritmin ehdottamisesta hän aakkoset!
Tämä tulostaa aakkoset tallentamalla a
ja A
kuusikulmion kahdelle reunalle ja 26 kuusikulmion reunalla, joka koskettaa kirjainten välistä liitosta. Tämä näyttää tältä:
A \ / a | 26
Sitten se syöttää silmukan, joka tulostaa kirjaimet, lisää niitä ja pienentää sitten numeroa. Yhden iteraation jälkeen meillä olisi:
B \ / b | 25
Ja niin edelleen. Alustamisen lineaarinen koodi on: 0x1A " A } a
. Ohjausvirtauksen muutosten ulkopuolella olevien silmukoiden lineaarinen koodi on: ; ) " ; ) { ( " =
.
Kun laskuri saavuttaa nollan, seuraamme eri polkua tulostamaan numerot ja alaviiva. Lineaarisesti kirjoitettu tämä on: x 3 5 6 8 4 7 9 ! ; { @
. Tämä korvaa nykyisen muistireunan arvon numerolla 1203568479 (huomaa, että x
”: n ASCII-koodi on 120), joka sisältää kaikki desimaaliluvut. Tulostamme tämän numeron ja käytämme sitten Hexagony: n siistiä ominaisuutta: tulostamme numeron mod 256 ASCII-merkkinä. Tämä sattuu olemaan 95 tai alaviiva.
Vastaa
Brainfuck, 114 103 98 90 76 71 tavua
Toinen triviaali (nyt ei -trivial) -ratkaisu, mutta tällä kertaa se on BF!
Tallennettu 14 (!) tavua @primon ansiosta.
Tallennettu vielä 4 tavua @primo-ehdotuksen ansiosta alue taaksepäin, ja tallensin toisen lisäämällä sitä ennen pienten kirjainten tulostamista.
Uusi (toistuvuus 4, 71):
+[--[<+++++++>->+<]>-]<<+++<--<-<-----<++++.+>>>[-<<.+<+.>>>]>[-<<.+>>]
Vanha (arvot, 114):
-[----->+<]>--->++++++++++>--[----->+<]>-------.++>----[---->+<]>++>++++[->++++++<]>++[-<<.+<<.+>>>>]<<<<<<[-<.+>]
Vanha (toistuminen 1, 103):
++++++++++[[<+>->+<]>+++++++++++++++]<<[<]>>+>++++++++>>----->>-----.++<<<<<[->>>.+>>.+<<<<<]<[->>.+<<]
Vanha (toistuminen 2, 90):
+++++++[[<+>->+<]>>+++[-<+++++++>]<]<<[<]>+++>-->->----->++++.++<<<[->>.+>.+<<<]<[->>.+<<]
Vanha (toistuminen 3, 76):
+[[<+++++++>->+<]>+++]<<[<]>+++>-->->----->++++.++<<<[->>.+>.+<<<]<[->>.+<<]
Oletuksena on 8-bittinen solujen kääriminen ja muistin kääriminen. Käytin Kokeile online-tilassa .
Kaikki tulostetaan _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789
Ensinnäkin tämä osa
+[--[<+++++++>->+<]>-]<<
alustaa nauhan näillä arvot
[91, 70, 49, 21, 7] ^
Tämä toimii, koska mallintamani toistosuhde on periaatteessa f(x) = 7 * (3 * x + 1)
, taaksepäin. Katso @primo ”Hei, maailma! Vastaa saadaksesi selityksen toistumissuhteesta.
Sitten se on melko yksinkertainen muuttaa nämä arvot hyödyllisiksi. (ja tulosta alaviiva)
Code: +++<--<-<-----<++++.+ Tape: [96, 65, 48, 26, 10] ^
Sitten yksinkertaiset silmukat käyttävät arvoja muiden merkkien tulostamiseen. Säästän yhden tavun lisäämällä kasvun ennen tulostusta.
>>>[-<<.+<+.>>>]>[-<<.+>>]
Minun on todella löydettävä lyhyempi sekvenssigeneraatio.
Löysin toistosuhteen, joka näyttää toimivan hyvin, mutta saattaa olla lyhyempi ilman metsästystä ja nokkaamista.
Käytin lineaarista regressiolaskuria löytääksesi mahdollisimman lyhyen lineaarisen toistosuhteen, joten minun pitäisi todennäköisesti löytää jokin muu kaava, jos haluan parantaa.
@primo todella paransi toistumissuhdetta, kiitos.
Kommentit
- Entä taaksepäin tehty rakenne?
+[--[<+++++++>->+<]>-]
- @primo Vau! Kuinka se toimii?
- 3 on epätasainen, joten se silmukkaa kokonaan 256 kertaa. Lopettamalla
>-]
, voit olla varma, että lopullinen termi on 1 (x7). Oikeastaan sinun pitäisi todennäköisesti aloittaa-
, se päättyy paljon nopeammin.
vastaus
Sesos , 17 tavua
00000000: a854be 2cbc9e 71d597 14bc56 1ad99e 713b .T.,..q....V...q;
Tulos
0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_
Kokeile online! Tarkista Debug nähdäksesi luotu binäärikoodi.
Kuinka se toimii
Yllä oleva binaaritiedosto on luotu kokoamalla seuraava SASM-koodi.
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.
Kommentit
- Vau, aion lähettää ratkaisun, joka on hyvin samanlainen kuin sinun .
- Samankaltaiset mielet ajattelevat hienosti !
- @LeakyNun Hm, aika myöhään, mutta näyttää siltä, että sinun on 3 tavua lyhyempi …
- @EriktheOutgolfer Sesos koodattiin aiemmin vähemmän tehokkaalla tavalla. Molemmat ohjelmat ovat nyt 17 tavua pitkä.
- @Dennis Ah, TIO-välimuisti voi toisinaan olla hämmentävää.
A,'[,_el^'_