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

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ò 

Kokeile verkossa!

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

Kokeile verkossa!

Selitys:

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

Kommentit

  • @ mbomb007 Kyllä, se vastaa CJam-koodia A,'[,_el^'_
  • mikä koodaus tämä on?
  • @ CᴏɴᴏʀO ’ Bʀɪᴇɴ CP-1252 tai Windows-1252

Vastaa

Rubiini, 26 tavua

Merkkejä voidaan tulostaa missä tahansa järjestyksessä? Älä ”t Huomaa, jos teen!

Kokeile verkossa!

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

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

Kokeile online-tilassa .

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

Kokeile verkossa!

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 -kohtaa putchar. putc odottaa myös virran kirjoittavan, johon et ’ ohittanut.Itse toiminto toimii hyvin (yritä poistaa putc 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 

Kokeile Ideonessa

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

Pure bash, 32

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

Ideone .

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;  

online-esittely .

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_

Kokeile verkossa

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 korvattava w vasemmalla o: llä. tallenna tavu käyttämällä EO -tunnusta d -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 

Kokeile verkossa!

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

Kokeile verkossa!

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

Kokeile online-tilassa!

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

Kokeile verkossa!

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

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

Kokeile täällä

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_ 

Kokeile verkossa!

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ää.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *