var QUESTION_ID=92598,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/92598/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>
Antworten:
Python, 32 Bytes
Anonyme Lambda-Funktion. Bei einer gegebenen Ganzzahl schreibt x "- ~" abs (x) mal und entfernt das erste Zeichen. Wenn x negativ ist, wird am Ende eine Null hinzugefügt.
quelle
n
anstelle vonx
und'
anstelle von"
:)JavaScript (ES6),
3331 BytesRekursion <eingebaute <Schleifen (zumindest in diesem Fall). Wertet die Eingabe grundsätzlich aus:
~
der Zeichenfolge ein hinzu.-
der Zeichenfolge ein hinzu.Nutzt dieses Muster:
quelle
Pyth,
141312 Bytes-2 Bytes dank @StevenH.
Testsuite
Beschlossen, Pyth auszuprobieren, so übersetzte ich meine Python-Antwort darauf. Jede Hilfe willkommen!
Erläuterung:
quelle
>0
statt<Q0
tW>0Q_+0sm"~-
_<>0Q+0sm"~-
Ich hoffe, dass Sie damit einverstanden sind, wenn ich dies zu meiner Lösung hinzufüge.C 46 Bytes
Anders als die meisten (alle?) Andere Antworten gibt dieses an die Betreiber
~
und-
eins nach dem anderen.quelle
05AB1E ,
1413 BytesErläuterung
Probieren Sie es online!
quelle
Retina,
1917 BytesErsetzen Sie die Zahl durch unär, mit einer Null am Ende. Ersetzen Sie jeweils
1
durch-~
. Doppel-Negativ entfernen, falls vorhanden.Probieren Sie es online aus
Alle Testfälle auf einmal (leicht modifiziertes Programm zur Unterstützung mehrerer Testfälle)
quelle
Perl
38 35 33(23 + 1 für -p) 24-13 danke an Dada
quelle
-p
statt-r
. Sie können auch die letzte Klammer und das Semikolon entfernen:if$h<0
reicht aus.$h<0&&s;.;
stattdessen auch 2 Bytes sparens/.// if $h<0
. (-p
fügt ein;
am Ende des Codes, so dass keine Notwendigkeit für die letzte;
vons;.;;
. Unda if b
entspricht in etwab && a
, aber in diesem Fall spart es Ihnen ein Byte, weil Sie das Leerzeichen entfernen können);
.Dyalog APL , 18 Bytes
'0',⍨
Zeichen Null angehängt an0∘>
Negativität (dh 1 für Zahlen unter 0; 0 für Null und höher)↓
heruntergefallen von'-~'⍴⍨
Die Zeichenfolge "~ -" wird zyklisch in Länge geändert2×
zweimal|
der absolute Wert+
Plus0∘<
Positivität (dh 1 für Zahlen über 0)TryAPL online!
quelle
Haskell, 41 Bytes
f n=['-'|n>0]++(tail$[1..abs n]>>"-~")++"0"
Danke an nimi für 3 Bytes
quelle
tail
scheitert fürn=0
. Sie könnendrop 1
stattdessen verwenden.f n|n<0=tail.f$abs n|x<-[1..n]>>"-~"=x++"0"
....|n<0=tail$f(-n)|...
.V , 21 Bytes
Probieren Sie es online!
V hat nur eine sehr eingeschränkte Unterstützung für Zahlen, und es gibt eigentlich kein Konzept für negative Zahlen. Dies bedeutet, dass wir zur Unterstützung von Negativen (oder sogar 0) einige hackige Workarounds verwenden müssen.
Erläuterung:
quelle
JavaScript (ES6),
3937 Bytes2 Bytes dank @Neil gespeichert
quelle
Gelee , 10 Bytes
Dies ist ein volles Programm. Probieren Sie es online!
Wie es funktioniert
quelle
Java 7,
9579 Bytes79 Bytes:
Ungolfed:
Alte Version (95 Bytes):Verwendungszweck:
Probieren Sie es hier aus!
Ausgabe:
quelle
Ruby, 34 Bytes
quelle
EXCEL:
5533 BytesDie Eingabe erfolgt in Form einer Zahl in die A1-Zelle. Formel kann überall außer A1 gehen.
quelle
T-SQL, 87 Bytes
Die
x*x+1
Bedingung in substring istx^2+1>=2*abs(x)
für alle ausreichendx
.Wie in SQL üblich, wird die Eingabe in einer Tabelle gespeichert:
quelle
CJam ,
1814 BytesHat sich von Emignas Antwort inspirieren lassen , um 4 Bytes zu sparen.
Probieren Sie es online! (Als durch Zeilenvorschub getrennte Testsuite.)
Erläuterung
quelle
Vim - 31 Tastenanschläge
Erste Vim Golf, viel verpasst.
quelle
:s/^-
anstelle von:s/-\~/\~-
undD
anstelle vond$
<C-a>
und dann zwei Zeichen am Ende löschen.0i
funktioniert nicht?0
Bewegt den Cursor zum ersten Zeichen in der aktuellen Zeile. Sie können in V aber auch 0 als Zählung verwenden.Matlab, 61 Bytes
quelle
Pyke,
1413 BytesProbieren Sie es hier aus!
quelle
Perl 6 , 25 Bytes
Erläuterung:
quelle
Jelly,
1412 Bytes-2 Bytes dank @Dennis (geben Sie 0 zurück, anstatt "0" zu verketten, so dass dies nur ein vollständiges Programm ist.)
Testen Sie es bei TryItOnline
Wie?
quelle
> <>, 18 + 3 = 22 Bytes
Probieren Sie es online! +3 Bytes für das
-v
Flag, um den Stack mit der Eingabe zu initialisieren. Wenn angenommen wird, dass STDIN leer ist, ist Folgendes ein Byte kürzer:Das Programm kippt die Eingabe
n
bei Bedarf so lange, bis 0 erreicht ist, woraufhin ein Fehler auftritt.quelle
Oktave, 51 Bytes
Zuerst den Matlab-Ansatz von @pajonk offen kopieren und dann einige Details modifizieren, als "äußeres Produkt" zwischen einem Vektor von Einsen und den Zeichen "- ~" umschreiben und on-the-fly-Indizierung (oder was es sein könnte) missbrauchen aufgerufen) lassen Sie uns einige Bytes sparen. Es schmerzt mich immer noch ein wenig, dass ich den Indexausdruck nicht dazu bringen kann, weniger Bytes zu nehmen.
Octave erlaubt ein (i1) (i2) oder sogar (...) (i1) (i2) für die Indizierung, wo Matlab Variablen zwischen den Indizierungen speichern soll.
ist viel zu lang, um "zuerst überspringen, wenn" zu beschreiben. Es muss einen besseren Weg geben.
quelle
PseudoD ,
688579521 BytesErklären:
quelle
adquirir e``fijar p a Escribir
)?PHP, 61 Bytes
quelle
PHP, 58 Bytes
quelle
Labyrinth , 25 Bytes
Probieren Sie es online!
Erläuterung
Ich mag den Kontrollfluss in diesem wirklich. Die IP läuft in einer Zahl 8 (oder eigentlich einem ∞, denke ich) durch den Code, um die Eingabe
0
beim Drucken der entsprechenden Zeichen langsam auf zu reduzieren .Der Code beginnt in der oberen linken Ecke und geht nach rechts. Der
`
macht gerade nichts.?
Liest die Eingabe und+
fügt sie der impliziten Null hinzu. Natürlich macht das auch nichts, aber wenn wir diesen Code noch einmal?
durchlaufen , wird eine Null gedrückt (weil wir bei EOF sind), und+
dann wird diese Null beseitigt.Als nächstes wird die
#
Stapeltiefe verschoben, um sicherzustellen, dass der Stapel einen positiven Wert aufweist, damit sich die IP nach Süden dreht, und;
es wird wieder verworfen.Das
"
ist ein No-Op und fungiert als Hauptzweig des Codes. Es sind drei Fälle zu unterscheiden:Wenn der aktuelle Wert positiv ist, dreht sich die IP nach rechts (nach Westen) und beendet eine Runde der linken Schleife:
Wenn der aktuelle Wert negativ ist, dreht sich die IP nach links (nach Osten) und der folgende Code wird ausgeführt:
Beachten Sie, dass sich diese beiden abwechseln (da beide das Vorzeichen der Eingabe ändern), bis der Eingabewert auf Null reduziert wird. An diesem Punkt...
!
und dreht sich dann nach Westen auf die@
.!
druckt das0
und@
beendet das Programm.quelle
GolfScript ,
302420 Bytes~."-~"\abs*\0<{(;}*0
Eingang:
-5
Ausgabe:
-5 = ~-~-~-~-~0
Erläuterung
Probieren Sie es online!
quelle
2 =
, nur das-~-~0
.{(;}*0
anstelle von verwenden{(;}{}if 0
.