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 id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <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 id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Odpowiedzi:
Wypukły, 9 bajtów
Nowa metoda! Uświadomiłem sobie również, że jest to dokładnie to samo co odpowiedź Luisa, ale w wypukłym, ale wymyśliłem to niezależnie.
Wypróbuj online!
Wyjaśnienie:
Stare rozwiązanie, 10 bajtów:
Wypróbuj online!
Wyjaśnienie:
źródło
A,'[,_el^'_
Rubinowy, 26 bajtów
Znaki można wydrukować w dowolnej kolejności? Nie przejmuj się, jeśli to zrobię!
Wypróbuj online!
źródło
Perl, 20 bajtów
Wymaga
-E
bez dodatkowych kosztów.Tak więc moja pierwotna odpowiedź (poniżej) była trochę zbyt nudna. Jedyne, co udało mi się wymyślić, to powyższe, to jest dokładnie to samo, ale wygląda nieco bardziej myląco ... To prawie dokładnie tak samo jak poniżej:
Lubię komentarze @ msh210 w komentarzach, ale są one trochę za długie!
źródło
say grep/\w/,map chr,1..122
||say map{chr=~/\w/;$&}1..122
||say map{chr=~s/\W//r}1..122
say chr=~/\w/g for 1..255
...Cheddar,
3127 bajtówTo
@"
dobrze pokazuje operatoraNiedokończenie, ponieważ w końcu zadzwoniłem do naprawiania
@"
operatora. Błąd polegał na tym, że generował zakres Cheddar, a nie zakres JS, więc nie mógł poprawnie działaćWyjaśnienie
@"
Operator zaprojektowana przez @ CᴏɴᴏʀO'Bʀɪᴇɴ i co robi to generuje szereg ciąg od LHS do RHS. Gdy jest używany jako operator jednoargumentowy, zwraca znak w danym punkcie kodowym (jak pythonchr
)Bez golfa
źródło
pieprzenie mózgu, 58 bajtów
Wypróbuj online .
Inicjuje taśmę do 3,2 n i działa od tego momentu .
źródło
JavaScript (ES6), 62 bajty
Zwraca
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
, więc tylko 6 bajtów krótszych niż funkcja zwracająca literał ciągu. Tak, to do bani.źródło
btoa
zwraca wymagane dane wyjściowe.atob
._
) i 14 dla_=>atob("")+""
.Haskell, 38 bajtów
Nie ma tu nic do wyjaśnienia.
źródło
:
i++
?++
bierze dwa ciągi i łączy je.:
pobiera znak i ciąg znaków i umieszcza znak przed ciągiem."_"++['a'..'z']...
działa również, ale jest o jeden bajt dłużej.PowerShell v3 +,
3533 bajtówKonstruuje tablicę dynamiczną
1..127
, rzutuje ją jakochar
tablicę. Jest to podawane-match
operatorowi, który pracuje nad wyrażeniem regularnym\w
, który zwróci wszystkie pasujące elementy (tj. Dokładnie alfanumeryczny i podkreślnik). Hermetyzujemy te elementy tablicy w-join
paczkę, aby utworzyć jeden ciąg. Pozostaje to w potoku, a dane wyjściowe są niejawne.źródło
0
...V, 27 bajtów
Wypróbuj online!
Ta odpowiedź jest strasznie skomplikowana. Wyjaśnię później.
Hexdump:
Wyjaśnienie:
Czytelny:
źródło
J,
302928 bajtówZapisano bajt dzięki randomra!
Wydajność:
Wyjaśnienie
Nie będę wyjaśniał per se , ale dostarczy pośrednich wyników.
źródło
Haskell, 31 bajtów
Wyrażenie
zip "aA0_" "zZ9_"
podaje listę punktów końcowych[('a','z'),('A','Z'),('0','9'),('_','_')]
.do
Notacja zajmuje każdy(x,y)
z posilki\(x,y)->[x..y]
i Łączy wyników. Dzięki Andersowi Kaseorgowi za dwa bajty zdo
zamiast>>=
.Porównaj z alternatywami:
źródło
do
notacja oszczędza dwa bajty:do(x,y)<-zip"aA0_""zZ9_";[x..y]
C, 50 bajtów
Zadzwoń
f()
bez żadnych argumentów.Wydruki
źródło
isalnum(n)|n==95&&putchar(n)
putc
zamiastputchar
.putc
oczekuje również strumienia do zapisu, którego nie przekazałeś. Sama funkcja działa dobrze (spróbujputc
całkowicie usunąć i działa).If the number of arguments does not equal the number of parameters, the behavior is undefined.
6.5.2.2/6, patrz N1570 ./// , 63 bajty
źródło
Python 3, 58 bajtów
Pełny program, który drukuje do STDOUT.
Dane wyjściowe to:
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Jak to działa
Wypróbuj na Ideone
Gdyby dozwolone były stałe łańcuchowe, następujące byłyby 45 bajtów:
źródło
print('_'+*filter(str.isalnum,map(chr,range(123))))
print('_',*filter(str.isalnum,map(chr,range(123))))
, ale to drukuje oddzielające spacje; OP stwierdził w komentarzach, że „... w wyniku nie są dozwolone żadne spacje”.print''.join(filter(str.isalnum,map(chr,range(123)))),'_'
Moja pierwsza próba kodegolfa!
C #,
168152150147130127117116115109106 bajtówWielkie dzięki dla aloisdg, AstroDan, Leaky Nun i Kevin Lau - nie Kenny za całą pomoc w komentarzach.
źródło
\w
klasa wyrażeń regularnych obejmuje także znaki alfanumeryczne_
, które powinny"\\w"
być wystarczające dla funkcji dopasowania wyrażeń regularnych.Pure Bash, 32
Ideone .
źródło
Obiekt Pascal,
858373 bajtyWystarczy zwykły obiekt pascal za pomocą zestawu znaków. Napisanie pełnego programu zamiast procedury goli 2 bajty. Usunięcie słowa kluczowego programu powoduje kolejne 10 bajtów.
źródło
program
słowa kluczowego.bash -
4737 bajtówDane wyjściowe w moim systemie to:
Dzięki Digital Trauma za pomocne sugestie.
W niektórych systemach możesz użyć
ascii
zamiastman sh
zapisać bajt.źródło
man sh|egrep -io _\|\\w|sort -u|tr -d \\n
\w
mecze,_
a już nie rozróżnia wielkości liter, więc może jeszcze bardziej skrócić.env
zamiastman sh
powinien działać w większości środowisk. To działa na moją.$ env|egrep -o \\w|sort -u|tr -d \\n
->0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
.J
. Mój błąd.PHP, 40 bajtów
Demo online .
źródło
Retina ,
3019161512 bajtówZmodyfikowałem oryginalną próbę alfabetu dla tej najnowszej wersji. Każda postać jest drukowana w pętli.
Pierwszy wiersz jest pusty.
Wypróbuj online
Wydajność:
Dzięki Leaky Nun za grę w golfa 4 bajty mojej ostatniej próby.
źródło
w
liczy się to jako stała zawierająca 9 lub więcej wymaganych znaków. Prawdopodobnie będziesz musiał rozwinąć prawą stronę i zastąpićw
lewąo
. Chociaż możesz zapisać bajt, używającEO
zamiast,d
ponieważ zawierają one tylko 5 znaków.w
na etapie transliteracji nie ma nic do wyrażenia regularnego. Jest to skrót, który rozwija się do listy wymaganych 63 znaków. Przynajmniej zapytałbym orlp o tę sprawę, ponieważ jest ona zupełnie inna niż użycie\w
wyrażenia regularnego.MATL , 11 bajtów
Wypróbuj online!
źródło
8W:'\w'XX
8W:'\w'XX!
co próbowałem, ale nie działaBrachylog , 25 bajtów
Spowoduje to wydrukowanie następujących elementów
STDOUT
:Wyjaśnienie
źródło
Pyth,
1312 bajtówWypróbuj online!
Znajduje wszystkie znaki od U + 0000 do U + 007B pasujące do wyrażenia regularnego
/\w/
.Wyjścia
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
.alternatywne podejście: 15 bajtów
Wypróbuj online!
zasadniczo wytwarza się pół-inclusive wymagane zakresy:
0-:, A-[, a-{, _-`
.źródło
CJam ,
151411 bajtów4 bajty wyłączone dzięki @FryAmTheEggman i @Dennis!
Wypróbuj online!
źródło
Brainfuck, 89 bajtów
Wypróbuj tutaj
Detale:
Gdybym mógł skomentować, musiałbym poprawić odpowiedzi innych. Ale ponieważ nie mogę, równie dobrze mogę opublikować własne. Gdy zacząłem pisać, najniższy BF miał 96 długości.
źródło
F #,
5059 bajtówWydajność:
Edycja: brakowało cyfr po raz pierwszy
Edit2, zainspirowany tym rozwiązaniem Haskell, ten fragment F # ma 67 bajtów.
Wydajność:
źródło
Sześciokąt, 33
Rozszerzony:
Wydajność:
Wypróbuj online!
Zauważ, że
0x1A
jako pierwszy bajt programu istnieje znak, którego nie można wydrukować . To również sprawia, że pierwszy rząd rozszerzonego sześciokąta wygląda trochę nie tak. Bardzo dziękuję Martinowi za pokazanie mi tej sztuczki, a także za zasugerowanie algorytmu drukowania alfabetu!Spowoduje to wydrukowanie alfabetu poprzez zapisanie
a
iA
na dwóch krawędziach sześciokąta oraz cyfry 26 na krawędzi sześciokąta, która dotyka połączenia między literami. Wygląda to mniej więcej tak:Następnie wchodzi w pętle, które drukuje litery, a następnie zwiększa je, a następnie zmniejsza liczbę. Po jednej iteracji mielibyśmy:
I tak dalej. Kod liniowy dla inicjalizacji jest:
0x1A " A } a
. Kod liniowy pętle zewnątrz zmian przepływu sterowania wynosi:; ) ' ; ) { ( ' =
.Gdy licznik osiągnie zero, podążamy inną ścieżką, aby wydrukować liczby i znak podkreślenia. Rozpisane liniowo to:
x 3 5 6 8 4 7 9 ! ; { @
. Zastępuje to bieżącą wartość krawędzi pamięci liczbą 1203568479 (zauważ, żex
kod ASCII to 120), który zawiera wszystkie cyfry dziesiętne. Drukujemy ten numer, a następnie używamy ciekawej funkcji Hexagony: drukujemy numer mod 256 jako znak ASCII. To akurat ma 95 lub podkreślenie.źródło
Brainfuck,
11410398907671 bajtówKolejne
trywialne(teraz nietrywialne) rozwiązanie, ale tym razem jest BF!Zaoszczędź 14 (!) Bajtów dzięki @primo.
Zaoszczędziłem jeszcze 4 bajty dzięki sugestii @ primo, aby wygenerować zakres do tyłu, a kolejny zaoszczędziłem, zwiększając przed drukowaniem małych liter.
Nowość (cykl 4, 71):
Stare (wartości, 114):
Stare (rekurencja 1, 103):
Old (recurrence 2, 90):
Stare (rekurencja 3, 76):
Zakłada 8-bitowe zawijanie komórek i pamięć zawijania. Użyłem Wypróbuj online .
Wszystko wydrukowane
_AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789
Po pierwsze, ta część
inicjuje taśmę tymi wartościami
Działa to, ponieważ relacja wzorca, którą modelowałem, jest w zasadzie
f(x) = 7 * (3 * x + 1)
wstecz. Zobacz @ Witaj, świecie! Odpowiedz na wyjaśnienie, czym jest relacja powtarzalności.Następnie zmiana tych wartości na przydatne jest dość prosta. (i wydrukuj podkreślenie)
Następnie proste pętle używają wartości do drukowania reszty znaków. Oszczędzam 1 bajt dzięki przyrostowi przed wydrukiem.
Naprawdę muszę znaleźć krótszą generację sekwencji.Znalazłem relację nawrotów, która wydaje się działać dobrze, ale może być krótsza bez polowania i dziobania.Użyłem kalkulatora regresji liniowej, aby znaleźć możliwie najkrótszą możliwą relację liniowej rekurencji, więc prawdopodobnie powinienem znaleźć inną formułę, jeśli chcę poprawić.
@primo bardzo poprawiło relację powtarzalności, dzięki.
źródło
+[--[<+++++++>->+<]>-]
>-]
, możesz być pewien, że końcowy termin to 1 (x7). Właściwie powinieneś zacząć od tego-
, że kończy się znacznie szybciej.Sesos , 17 bajtów
Wydajność
Wypróbuj online! Zaznacz opcję Debuguj, aby wyświetlić wygenerowany kod binarny.
Jak to działa
Powyższy plik binarny został wygenerowany przez skompletowanie następującego kodu SASM.
źródło
Pyke, 13 bajtów
Wypróbuj tutaj!
Generuje ascii 0-150 i filtruje według alfanumeryczności i dodaje
_
do końcaźródło