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
als Eingabe geben und eineE
mitE
s machen könnten ?Antworten:
05AB1E ,
1614 BytesErläuterung
Probieren Sie es online!
4 Bytes gespart dank Adnan.
quelle
©
Register: p?Í×s.øU×S»X»D»Xr»
.Python,
535155 Bytes+4 Bytes dank @nimi
anonyme Lambda-Funktion, um es aufzurufen, schreiben Sie
f=
davor. Beispiel:alternativ 53 Bytes
alte Version mit dem Sonderfall ohne Eingabe,
696563 Bytesyay, um die Anforderungen mitten in der Herausforderung zu ändern ...
quelle
2
in Ihrem Beispiel) ist die Gesamtlänge der Linie, einschließlich der Ecken, sodass die richtige Eingabe für Ihre Form erfolgtf(4,1 ...)
.C
167161159 BytesJa.
Probieren Sie es auf Ideone mit einigen Testfällen
quelle
Ruby,
544542 BytesEs ist eine anonyme Funktion, die den unterschiedlichen Teil der Eingabe als separate Parameter verwendet und das Ergebnis als vollständige Zeichenfolge zurückgibt.
Beispielsweise,
druckt
quelle
Javascript (ES6), 64 Byte
Beispiel
quelle
{ "message": "Script error.", "filename": "", "lineno": 0, "colno": 0 }
wenn inline laufen..repeat()
V , 18 Bytes
Probieren Sie es online!
quelle
R, 80 Bytes
Ziemlich repetitiv:
Ungolfed:
quelle
Pyke,
1615 BytesProbieren Sie es hier aus!
quelle
Pyth, 19 Bytes
Ein Programm, das die Eingabe des Eckzeichens, der Anzahl der horizontalen Zeichen, des horizontalen Zeichens, der Anzahl der vertikalen Zeichen und des vertikalen Zeichens mit Zeilenumbrüchen auf STDIN vornimmt und das Ergebnis druckt.
Probieren Sie es online aus
Wie es funktioniert
quelle
MATLAB,
95 92 91 8581 BytesMATLAB 'E' Funktion. (edit: funktioniert nicht auf Octave)
Und ungolfed:
Die Funktion sollte wie folgt aufgerufen werden:
Welches wird zurückkehren:
Dies kann wahrscheinlich ein wenig vereinfacht werden, ich werde weiter daran arbeiten. Ich mag es nicht, die gesamte Funktionsdeklaration zu haben, um die Eingabe zu erhalten, also werde ich sehen, ob ich das verbessern kann.
Einsparung von 3 Bytes durch Vereinfachung der Erzeugung der ersten Zeile, um zuerst die Zeile ohne Ecken zu erstellen und dann die Ecken hinzuzufügen, da dies die Anzahl der erforderlichen Indizierungen verringert.
Ein weiteres Byte wird gespeichert, indem mit der ersten Ecke begonnen wird.
6 weitere Bytes durch Ersetzen von
repmat(a,3,1)
call durch[a;a;a]
.4 Bytes
a
ohne spezielle Initialisierung eingespart (bereits in der Funktionsdeklaration deklariert) - danke @LuisMendoquelle
a=[c a c]
dort, aber es entfernt, um Dinge zu verkleinern, da Sie normalerweise nicht auf eine nicht vorhandene Variable indizieren und sie dabei erstellen können. Ich habe vergessen, dass dies eine Funktion war und dahera
bereits in der Funktionsdeklaration als Rückgabewert deklariert ist. Vielen Dank :)Perl, 40 + 1 (
-n
) = 41 BytesVielen Dank an @Ton Hospel für das Speichern von 14 Bytes und das Zulassen, dass das Programm mit Einträgen größer als 10 arbeitet.
Müssen
-n
so gut wie-E
(oder-M5.010
) laufen. Zum Beispiel :quelle
< 10
indem Sie/(.)(.)/;$,=$' x<>;say+($1.$2x(<>-2).$1.$/)x3
eine Datei einfügen (da sie verwendet wird$'
) und mitperl -M5.010 -n prog.pl <<< '^!S\n4\n9'
(echte Zeilenumbrüche verwenden ) aufrufen, was 48 Byte (2 zusätzliche) entspricht Handicap, da es nicht mit kombiniert werden kann-e
)>10
funktionieren würde . Tolle Arbeit mit dem Eingabeformat, danke.perl -nE '/.$/;$,=$/.<>x<>;say+($`.$&x(<>-2).$`)x3' <<< '^$\n!\n4\n9'
beträgt 41 Byte (nicht mehr$'
) und beseitigt auch die falsche, nachgestellte NewlineDyalog APL ,
3129 BytesFordert zur Eingabe von horizontalem Zeichen, Breite, Kreuzungszeichen, Höhe und vertikalem Zeichen in dieser Reihenfolge auf.
⎕⍴⍞
Eingabe-Horizontal-Zeichen und Wiederholung der Eingabe-Breiten-Zeiten ( ⍵ unten)⍞{
...}
Eingabe-Junction-Zeichen welches which sein wird in der Funktion ...∊⍺⍵⍺
Abflachen [[Kreuzung], [Horizontale], [Kreuzung]]⊂
kapseln, damit es Teil einer Liste sein kann(
...),
voranstellen ...h←⎕
Eingabehöhe⍞⍴⍨
gib das vertikale Zeichen ein und wiederhole es so oft↑
Machen Sie die Liste der Zeichenfolgen in eine Zeichentabelle⊂
kapseln (so kann es als Ganzes wiederholt werden)3/
wiederhole es dreimal⍪/
Verketten Sie die drei Teile vertikal(Das kapselt sie auch, also müssen wir ...)
⊃
Entfernen Sie die Kapselungh↓
Lass die ersten h (Reihen) fallenTryAPL online!
quelle
C 130 Bytes
Verwendung:
Ausgabe
quelle
define
s und Hinzufügen als wirdf(C,O,P,S,_,D,o){W;E;W;E;W;}
ein Byte gespeichert.C #, 108 Bytes
Anonyme Funktion, die jede horizontale und vertikale Linie generiert und die endgültige Ausgabe erstellt.
Ungolfed Funktion:
Volles Programm mit Testfällen:
quelle
MATL , 15 Bytes
Danke an @muddyfish für die Korrektur
Probieren Sie es online!
Erläuterung
Der Stapelinhalt nach jedem Schritt wird der Übersichtlichkeit halber anhand des ersten Beispiels in der Abfrage angegeben.
quelle
Bash + Coreutils, 105 Bytes
Unter der Annahme, dass die Datei, in der dies gespeichert ist, benannt ist
A.sh
, wäre die Verwendung:Die
--
werden benötigt, nur für den Fall, dass eine der Zeicheneingaben a-
, und istprintf
anscheinend keine Striche am Anfang einer Zeichenfolge verarbeitet, sehr schön ohne die doppelten Striche.Erläuterung
Angenommen, die Eingabe ist
5 2 + * |
...$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
Erstellen Sie das erste horizontale und vertikale Segment zusammen. Dies hätte zur Folge:
printf -- "$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
%.0s\n" {1..3}Wiederholen Sie die zuvor erstellten Teilzeiten
3
. Dies führt nun zu:printf -- "$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
%.0s\n" {1..3}|sed -n 1,$(($2*2+3))pLeiten Sie zum Schluss die vorherige Ausgabe weiter
sed
, um die letzten 2 Zeilensegmente zu entfernen, indem Sie nur die ersten<Vertical Segment Length>*2+3
Zeilen der ausgebenE
. Wir bekommen endlich das, wasE
wir wollen:quelle
PowerShell v2 +,
60 bis59 ByteNimmt Eingaben als einzelne Befehlszeilenargumente an. Konstruiert die horizontale Zeichenfolge, speichert diese
$x
für die spätere Verwendung und formt sie dann mit dem Komma-Operator zu einem Array,
. Führt eine Array-Verkettung durch (dh das Hinzufügen von Elementen zum Ende) und$d
formuliert sie zu einem Array von$b
Elementen. Dies wird wiederum mit einem anderen Komma-Operator in ein Array aus zwei Elementen formuliert und in der Pipeline belassen. Dann$x
bleibt die Horizontale in der Pipeline. Verwendet die Standardformatierung vonWrite-Output
, um eine neue Zeile zwischen Elementen einzufügen.Beispiel
quelle
Python 3, 60 Bytes
Eine Funktion
Testfall
quelle
Brainf * ck, 147 Bytes
Übernimmt die Eingabe von stdin als die ersten 5 eingegebenen Zeichen. Die ersten beiden haben 48 von ihrem ASCII-Code subtrahiert, so dass sich 0-9 wie erwartet verhält. Fügen Sie bei Zahlen> 9 der Zahl 48 hinzu und verwenden Sie das entsprechende Zeichen. Die anderen drei Zeichen entsprechen den Angaben in der Challenge.
Ich bin mir sicher, dass dies nicht die optimale Lösung ist, aber das Leben ist zu kurz, um es zu verstehen.
Mit Kommentaren:
Beispiellauf:
quelle
PHP, 97 Bytes
keine Schleife, nur eingebaute.
Laufen Sie mit
php -r '<code>' <parameters>
.quelle
Java 7,
205129 Bytes-76 Bytes dank eines anonymen Fremden.
PS: Bearbeiten Sie das nächste Mal nicht die Beiträge anderer Leute. Wenn Sie etwas zum Golfen haben, hinterlassen Sie es bitte als Kommentar, oder wenn es einen völlig anderen Ansatz verwendet, können Sie Ihre eigene Antwort geben. Trotzdem vielen Dank, dass Sie all diese Bytes weggolfen haben - wer auch immer Sie sind.
Ungolfed & Testfälle:
Probieren Sie es hier aus.
Ausgabe:
quelle
Schläger 124 Bytes
Mehr lesbare Form:
Testen:
quelle
C ++, 121 Bytes
Ungolfed:
In C ++ ist es nicht erlaubt, Funktionen ohne Typ wie in C zu deklarieren. Makros, die sich wie eine Funktion verhalten, sind jedoch durchaus möglich. Beachten Sie auch, dass die ungolfed-Version erst kompiliert wird, wenn Sie jedem außer der letzten Zeile des Makros ein "\" hinzufügen. Sie könnten zwei zusätzliche Bytes sparen, indem Sie das {} entfernen, aber dann können Sie das Makro nicht zweimal hintereinander verwenden.
Verwendung:
Ausgabe:
Probieren Sie es online aus
quelle
CJam , 23 Bytes
Probieren Sie es online!
Die Eingabe erfolgt in der angegebenen Reihenfolge, sollte jedoch durch Leerzeichen getrennt sein, anstatt ein Komma zu verwenden. Ein Grund für die Schwierigkeit besteht darin, den Eingang in die richtige Reihenfolge für CJam's zu bringen Join-Operation von zu bringen
*
. Zum Vergleich: Durch Neuanordnen der Eingaben in könnten 4 Bytes eingespart werden .Wenn die Eingaben synchronisiert sind
A B C D E
, funktioniert das Programm wie folgt:quelle
Lua (5,2), 144 Bytes
Probieren Sie es online! (Codierungsgrund)
Es sollte jetzt so etwas ausgeben:
Eigene Eingabe:
7 2 + l @
Sie können die Eingabe in project-> compile options ändern und dort die Werte ändern, wobei jeder Wert wie im Beispiel, jedoch nicht durch Kommas, sondern durch Leerzeichen getrennt ist.
quelle
QBIC, 44 Bytes
Erläuterung
quelle
PHP, 94 Bytes
Geben Sie ein Array in derselben Reihenfolge wie die vorgeschlagene Zeichenfolge ein
quelle
,"\n"
anstelle von verwenden."\n"
, können Sie die Parens für das Ternär löschen.for($h++;$i<=2*$h;)
und$i++%$h
speichert ein weiteres Byte.$v-1
gibt nur 3 horizontale Zeichen für[5,2,+,|,-]
. Anzahl der horizontalen Zeichen, ohne die Zeichen am linken und rechten Rand