var QUESTION_ID=92138,OVERRIDE_USER=58717;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;width:290px;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>
E
jako dane wejściowe i zrobićE
zE
s?Odpowiedzi:
05AB1E ,
1614 bajtówWyjaśnienie
Wypróbuj online!
Zaoszczędzono 4 bajty dzięki Adnan.
źródło
©
rejestru: p?Í×s.øU×S»X»D»Xr»
.Python,
535155 bajtów+4 bajtów dzięki @nimi
anonimowa funkcja lambda, aby ją nazwać, napisz
f=
przed nią. Przykład:alternatywnie, 53 bajtów
stara wersja ze specjalnym przypadkiem braku danych wejściowych,
696563 bajtówyay na zmianę wymagań w połowie wyzwania ...
źródło
2
w twoim przykładzie) jest całkowita długość linii, łącznie z narożnikami, więc właściwym wejściem dla twojego kształtu jestf(4,1 ...)
.C,
167161159 bajtówTak.
Wypróbuj na Ideone, z kilkoma przypadkami testowymi
źródło
Rubin,
544542 bajtówJest to anonimowa funkcja, która bierze inną część danych wejściowych jako osobne parametry i zwraca wynik jako pełny ciąg.
Na przykład,
odbitki
źródło
JavaScript (ES6), 64 bajty
Przykład
źródło
{ "message": "Script error.", "filename": "", "lineno": 0, "colno": 0 }
po uruchomieniu w linii..repeat()
V , 18 bajtów
Wypróbuj online!
źródło
R, 80 bajtów
Dość powtarzalne:
Nie golfowany:
źródło
Pyke,
1615 bajtówWypróbuj tutaj!
źródło
Pyth, 19 bajtów
Program, który pobiera separator nowej linii do STDIN znaku narożnego, liczby znaków poziomych, znaku poziomego, liczby znaków pionowych i znaku pionowego, i drukuje wynik.
Wypróbuj online
Jak to działa
źródło
MATLAB,
95 92 91 8581 bajtówFunkcja „E” MATLAB. (edycja: nie działa na Octave)
I bez golfa:
Funkcję należy wywołać w następujący sposób:
Który zwróci:
Prawdopodobnie można to nieco uprościć, będę dalej nad tym pracował. Nie lubię mieć całej deklaracji funkcji, aby uzyskać dane wejściowe, więc zobaczę, czy mogę to poprawić.
Zaoszczędzono 3 bajty, upraszczając generowanie pierwszego wiersza, aby najpierw utworzyć wiersz bez narożników, a następnie dodać narożniki, ponieważ zmniejsza to liczbę wymaganych indeksowań.
Kolejny bajt zapisany, zaczynając od pierwszego rogu.
6 dodatkowych bajtów, zastępując
repmat(a,3,1)
połączenie przez[a;a;a]
.Zaoszczędzono 4 bajty przy użyciu
a
bez konkretnej inicjalizacji (jest już zadeklarowana w deklaracji funkcji) - dzięki @LuisMendoźródło
a=[c a c]
tam, ale usunąłem to, aby zmniejszyć rzeczy, ponieważ normalnie nie można indeksować dostępu do nieistniejącej zmiennej i tworzyć ją w procesie. Zapomniałem, że była to funkcja, więca
jest już zadeklarowana w deklaracji funkcji jako wartość zwracana. Dzięki :)Perl, 40 + 1 (
-n
) = 41 bajtówDzięki @Ton Hospel za zapisanie 14 bajtów i umożliwienie programowi pracy z wpisem większym niż 10.
Potrzebujesz,
-n
a także-E
(lub-M5.010
) do uruchomienia. Na przykład :źródło
< 10
, wstawiając/(.)(.)/;$,=$' x<>;say+($1.$2x(<>-2).$1.$/)x3
plik (ponieważ używa$'
) i wywołując za pomocąperl -M5.010 -n prog.pl <<< '^!S\n4\n9'
(użyj prawdziwych nowych linii), który liczy się jako 48 bajtów (2 dodatkowe handicap, ponieważ nie można go łączyć-e
)>10
. Świetna praca z formatem wejściowym, dzięki.perl -nE '/.$/;$,=$/.<>x<>;say+($`.$&x(<>-2).$`)x3' <<< '^$\n!\n4\n9'
ma 41 bajtów (nie więcej$'
) i pozbywa się fałszywej końcowej liniiDyalog APL ,
3129 bajtówMonituje o znak poziomy, szerokość, znak skrzyżowania, wysokość, znak pionowy - w tej kolejności.
⎕⍴⍞
wprowadź poziomo-znak i powtórz czasy szerokości wejściowej ( ⍵ poniżej)⍞{
...}
znak złącza wejściowego, który będzie ⍺ w funkcji ...∊⍺⍵⍺
spłaszcz [[skrzyżowanie], [poziomy], [skrzyżowanie]]⊂
enkapsuluj, aby mógł być częścią listy(
...),
dodawać ...h←⎕
wysokość wejściowa⍞⍴⍨
wprowadź znak pionowy i powtórz to wiele razy↑
przekształć listę ciągów w tabelę znaków⊂
enkapsulować (aby można było powtórzyć jako całość)3/
powtórz to trzy razy⍪/
połącz trzy elementy pionowo(to też je kapsułkuje, więc musimy ...)
⊃
usuń kapsułkowanieh↓
upuść pierwszą h (rzędy)Wypróbuj APL online!
źródło
C, 130 bajtów
Stosowanie:
Wynik
źródło
define
i dodanie go jakof(C,O,P,S,_,D,o){W;E;W;E;W;}
zapisuje bajt.C #, 108 bajtów
Anonimowa funkcja, która generuje każdą linię poziomą i pionową i buduje ostateczny wynik.
Funkcja bez golfa:
Pełny program z przypadkami testowymi:
źródło
MATL , 15 bajtów
Dzięki @muddyfish za korektę
Wypróbuj online!
Wyjaśnienie
Zawartość stosu po każdym kroku jest zaznaczona dla jasności, wykorzystując pierwszy przykład w wyzwaniu.
źródło
Bash + coreutils, 105 bajtów
Zakładając, że nazwa pliku, w którym jest on przechowywany
A.sh
, będzie następujący:--
Są potrzebne, tylko w przypadku jednego z wejść znaków dzieje się-
, iprintf
najwyraźniej nie obsługuje myślniki na początku łańcucha bardzo ładne bez podwójnych kresek.Wyjaśnienie
Zakładając, że dane wejściowe to
5 2 + * |
...$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
Utwórz razem pierwszy segment poziomy i segment pionowy. Spowodowałoby to:
printf -- "$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
%.0s\n" {1..3}Powtórz wcześniej utworzone pół
3
etatu ponad. To powoduje teraz:printf -- "$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
%.0s\n" {1..3}|sed -n 1,$(($2*2+3))pNa koniec potokuj poprzednie wyjście, aby
sed
pozbyć się 2 ostatnich segmentów linii, wysyłając tylko pierwsze<Vertical Segment Length>*2+3
linieE
. W końcu otrzymujemy to,E
czego chcemy:źródło
PowerShell v2 +,
6059 bajtówPobiera dane wejściowe jako indywidualne argumenty wiersza polecenia. Konstruuje łańcuch poziomy, przechowuje go
$x
do późniejszego użycia, a następnie formuje w tablicę za pomocą operatora przecinka,
. Dokonuje konkatenacji tablicowej (tj. Dodając elementy na końcu)$d
sformułowanej w tablicę$b
elementów. To z kolei formułowane jest w tablicę dwóch elementów z innym operatorem przecinkowym i pozostaje w potoku. Następnie poziomo$x
pozostawia się na rurociągu. Nadużywa domyślnego formatowaniaWrite-Output
wstawiania nowej linii między elementami.Przykład
źródło
Python 3, 60 bajtów
Funkcja
Przypadek testowy
źródło
Brainf * ck, 147 bajtów
Pobiera dane wejściowe ze standardowego wejścia jako pierwsze 5 znaków. Pierwsze dwa mają 48 odjęte od kodu ASCII, więc 0-9 zachowuje się zgodnie z oczekiwaniami. W przypadku liczb> 9 dodaj 48 do liczby i użyj odpowiedniego znaku. Pozostałe trzy postacie są określone w wyzwaniu.
Jestem pewien, że nie jest to optymalne rozwiązanie, ale życie jest zbyt krótkie, by grać w golfa.
Z komentarzami:
Przykładowy przebieg:
źródło
PHP, 97 bajtów
bez pętli, tylko wbudowane.
Uruchom z
php -r '<code>' <parameters>
.źródło
Java 7,
205129 bajtów-76 bajtów dzięki anonimowemu nieznajomemu.
PS: Nie edytuj postów innych osób następnym razem. Jeśli masz coś do gry w golfa, zostaw to jako komentarz lub jeśli używasz zupełnie innego podejścia, możesz podać własną odpowiedź. Wciąż dziękuję za odłożenie wszystkich tych bajtów w golfa - kimkolwiek jesteś ...
Przypadki bez golfa i testy:
Wypróbuj tutaj.
Wynik:
źródło
Rakieta 124 bajtów
Bardziej czytelna forma:
Testowanie:
źródło
C ++, 121 bajtów
Nie golfowany:
W C ++ nie wolno deklarować funkcji bez typu jak w C. Jednak makra, które zachowują się jak funkcja, są całkowicie możliwe. Zauważ też, że wersja bez golfa nie zostanie skompilowana, dopóki nie dodasz „\” do każdego oprócz ostatniego wiersza makra. Możesz zaoszczędzić dwa dodatkowe bajty, usuwając {}, ale wtedy nie możesz użyć makra dwa razy z rzędu.
Stosowanie:
Wynik:
Wypróbuj online
źródło
CJam , 23 bajty
Wypróbuj online!
Dane wejściowe są w podanej kolejności, ale zamiast spacji należy je oddzielić spacjami. Niektóre z trudności polegają na uzyskaniu odpowiedniej kolejności danych wejściowych dla operacji łączenia
*
CJam ; dla porównania przegrupowanie wejścia może zaoszczędzić 4 bajty .Jeśli dane wejściowe są dubbingowane,
A B C D E
program działa mniej więcej tak:źródło
Lua (5.2), 144 bajty
Wypróbuj online! (Coding Ground)
Powinien teraz wypisać coś takiego:
Własny wkład:
7 2 + l @
Możesz zmienić dane wejściowe w projekcie-> opcje kompilacji i tam zmienić wartości, każda wartość jak w przykładzie, ale nie oddzielone przecinkami, ale spacjami.
źródło
QBIC, 44 bajty
Wyjaśnienie
źródło
PHP, 94 bajtów
Wprowadź format tablicy w tej samej kolejności, co sugerowany ciąg
źródło
,"\n"
zamiast."\n"
, możesz upuścić pareny dla trójki.for($h++;$i<=2*$h;)
i$i++%$h
zapisuje kolejny bajt.$v-1
daje tylko 3 poziome znaki dla[5,2,+,|,-]
. Liczba znaków poziomych, z wyłączeniem znaków lewej i prawej krawędzi