var QUESTION_ID=65106,OVERRIDE_USER=16196;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/65106/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}#answer-list{padding-right: 100px}
<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:
CJam,
3935 BytesProbieren Sie es online aus
Die neueste Version enthält Verbesserungen, die von @ MartinBüttner vorgeschlagen wurden, insbesondere die Verwendung des elementweisen Vektoroperators anstelle der Transponierung der beiden Listen.
Erläuterung:
quelle
ri60md]r"utehour"+6/W%.{1$1>'s*+}S*
(Sieht so aus, als ob Sie bei dieser Herausforderung einen recht soliden Vorsprung haben :))r"utehour"+6/W%
ist eigentlich genauso lang wie"hour minute"S/
, damit das Teil nicht hilft. Ich glaube ich hatte schon mal.
mit einem Block benutzt, aber ich hatte wieder vergessen, dass er unterstützt wurde.Python 3,
506711911611211110494 BytesIch mag es nicht, zur%
Formatierung von Strings im -Stil zurückzukehren, aber es spart 6 Bytes.format
.Bearbeiten: Eingabe vergessen.
Bearbeiten: Vergessen, mit Pluralformen umzugehen.
Bearbeiten: Yay Lambdas!Edit: Ungolfing hinzugefügt
Edit: Verdammt noch mal. Lambdas hat nicht geholfen.
Bearbeiten: Da die Minuten maximal drei Stellen haben und
int()
Leerzeichen in der Zeichenfolge keine Rolle spielen, kann ich mit ein paar Bytes spareninput()[:3]
.Ungolfed:
quelle
JavaScript, 78 Byte
Geben Sie für die Testsuite die Eingabe wie
"61 min"
in das Eingabefeld ein.Erläuterung
quelle
parseInt(n)
auf+n
.150 min
.2 hours 30 minutes
. Darf ich fragen, wie Sie es getestet haben?"61 min"
or'61 min'
Pyth,
3938 Bytesquelle
Vitsy ,
575452 BytesOh, wow, ich habe nicht einmal ganze Zahlen in meiner Sprache. oo
Probieren Sie es online!
quelle
K5,
5551 BytesDies ist allgemeiner, als es unbedingt sein muss; könnte es noch weiter nach unten golfen.
In Aktion:
Bearbeiten:
Dieses Programm hat im Laufe der Entwicklung mehrere sehr unterschiedliche Iterationen durchlaufen, und ich dachte, dass es aufschlussreicher sein könnte, einige der Zwischenschritte zu zeigen.
Hier war mein erster Versuch, das Problem zu lösen, bevor die Pluralisierungsanforderung eingeführt wurde. Hier gibt es deutliche Wiederholungen:
Mir wurde klar, dass die allgemeine Art, mit dem Auswerfen von Orten umzugehen, die "Dekodierungsform" von K5 war. Um Werte in die Zeichenfolge einzufügen, habe ich das Grundelement "dot-apply" verwendet, mit dem eine Argumentliste auf eine Funktion angewendet und die Liste in einzelne Parameter entpackt wird:
Hier ist nicht mehr viel Redundanz übrig. Als die Pluralisierung hinzugefügt wurde, zerlegte ich diese führende anonyme Funktion in eine Transformation, die ich auf jede Zahl anwenden konnte:
Mitglied wird
x
,y
und entweders
oder nichts, je nachdem , obx
gleich „1“. Letztlich war es besser , die Reihenfolge der Argumente für diese Funktion rückgängig zu machen.Bearbeiten 2:
Einige kleine Verbesserungen hier. Eine bessere Möglichkeit, eine „S“ oder eine leere Zeichenfolge auszuwählen, eine kürzere Konstante für „decode“, die den begrenzten Bereich des Eingangs reflektieren, und eine einfachere Art und Weise der Entsorgung „min“.
quelle
Pyth, 46 Bytes
Übernimmt Ein-
x min
und Ausgängex hours y minutes
Probieren Sie es hier
Erläuterung:
quelle
Perl 6 ,
8073 Bytes80 Byte original
Verwendung:
Aufgrund einer Änderung in der Frage kann ich
x?$m
das Ende der Funktion entfernen , wodurch ich es um 3 weitere Bytes reduzieren kann.quelle
JavaScript (ES6),
100948981 ByteDe-golfed Demo (bis ES5 umgewandelt, da nicht alle Browser ES6 noch unterstützen)
quelle
t=parseInt(t)
und Klammern, und dann setzen , dass , wo immer zuerst verwenden Siet
so:(h=0|(t=parseInt(t))/60)
. Auf diese Weise können Sie die Rückkehr entfernen und den{}
C #, 127 Bytes
Dies kann in eine Datei eingefügt und über die mit Mono gelieferte interaktive C # -Shell mit der Standardkonfiguration ausgeführt werden.
[Dies ist mein erster Versuch, Code Golf zu spielen. Ich hoffe, dass mein Beitrag ist keine Regeln zu verletzen.]
quelle
C 89 Bytes
quelle
Ruby, 75 Bytes
quelle
''
→p
.MATLAB,
111 108106 BytesDies funktioniert auch mit Octave und kann hier ausprobiert werden . Der Link führt zu einem Arbeitsbereich, der den Code bereits in einer Datei mit dem Namen enthält
runningLength.m
. Um es zu testen, geben Sie einfachrunningLength
an der Eingabeaufforderung ein und geben Sie dann die Eingabezeichenfolge ein, z. B.'123 mins'
und es wird die Ausgabe angezeigt.Nimmt die Eingabe als Zeichenfolge,
'123 mins'
konvertiert sie z. B. in eine Zahl (die dasmins
Bit implizit ignoriert ).Minuten und Stunden werden dann berechnet
Dann zeigt die Ausgabezeichenfolge
Das 's'-Bit der Ausgabe wird korrekt berechnet und verarbeitet - ein' s 'wird hinzugefügt, wenn die Zahl nicht 1 ist.
quelle
Python 2, 96 Bytes
quelle
Haskell,
117109 BytesWeniger Golf Version:
f
ist eine Funktion, die die ersten 3 Zeichen ihrer Eingabe in eine Ganzzahl umwandelt.p#q
ist eine Funktion, die pluralisiert,q
wennp
nicht gleich 1 ist. Um das Ergebnis ohne umgebende Anführungszeichen zurückzugeben, habe ichputStr
das Ergebnis an STDOUT ausgegeben.Danke an nimi für die Hilfe!
quelle
Python 2,
7977 BytesDie ersten 3 Zeichen der Eingabe werden einfach als Ganzzahl analysiert. Dies funktioniert nur, weil das dritte Zeichen in einer zweistelligen Eingabe ein Leerzeichen ist, das
int
bei der Konvertierung ignoriert wird.quelle
"hour"+m/120*"s"
und ebenfalls für Minuten tun .m=240
leider scheitern.LabVIEW, 50 Bytes
Dies wird nach meinem Vorschlag auf Meta gezählt .
Der Code ist ziemlich einfach, nimm die Zahl von der Eingabe Modulo mit 60 und füge ein s für Minuten hinzu!
quelle
Scala, 135 Bytes
Verwendung:
quelle
Haskell,
107101 BytesUngolfed:
s!n
werden vorangestelltn
zus
und fügt hinzu , eine's'
bis zum Ende , wennn /= 1
.f x
führt die Formatierung nach der Verwendung durchdivMod
.Da wir eine maximale Eingabe von annehmen können
240
,take 3
reicht es aus, nur die Zahl zu nehmen.(Musste wirklich hart versuchen, um @Craig Roys Punktzahl zu schlagen ...)
quelle
R 112 Bytes
Bearbeiten : Ein Scoping-Fehler wurde behoben und das Problem mit der Angebotsausgabe behoben.
Testfälle
Ich habe versucht, Platz zu sparen, indem ich versucht habe, einen Weg zu finden, um "s" nach Bedarf zu addieren oder zu subtrahieren, aber ich musste mich mit dem
sep =
Argument in derpaste()
Funktion herumschlagen, und es schien nicht wirklich so, als würde es mir sehr viel Platz sparen. Irgendwelche Vorschläge?Ungolfed
Durch Abrunden mit Eingabe / 60 oder Eingabe %% 60 (mod) werden die Stunden bzw. Minuten angegeben. Verketten Sie sie mit einer
ifelse()
Anweisung, die angibt, ob die Einheiten Stunde (n) oder Minute (n) sind.quelle
cat()
Funktion behoben .s
und Ihre Bedingungen ändern.Ruby,
971009988 BytesBearbeiten: Ausgabe fixieren.
Bearbeiten: Entfernen von geschweiften Klammern aus
divmod
.Edit: Yay String Interpolation! Vielen Dank an Vasu Adari . Auch besseres Ungolfing.
Ungolfed:
quelle
divmod
Methode verlieren . Durch die Verwendung der String-Interpolation können Sie auch einige Bytes sparen.Los, 177 Bytes
(Es enthält nur die Funktion und die Importanweisungen)
Hübsche Lösung -
Testen Sie es -
quelle
Mathematica, 61 Bytes
quelle
AutoHotkey ,
174170160 BytesAnmerkungen:
quelle
PHP,
7776 Bytesschrecklich, schrecklich, schrecklich!
PHP gibt nur ein paar
Notice
s für aus"s"[$h<2]
Zum Ausführen:
php -r 'CODE' '150 minutes'
und natürlich die Fehlerberichterstattung aus / von stdout entfernen!
Edit: -1Byte zuweisen in zuordnen (credit: insertusernamehere)
Es ist so hässlich, dass ich Linux-Benutzern einen Run-Helfer geben muss:
quelle
$m=($i=$argv[1])%60;echo$h=$i/60|0," hour","s"[$h<2]," $m minute","s"[$m<2];
.$m=($i=$argv[1])%60;echo$h=$i/60|0," hour",s[$h<2]," $m minute",s[$m<2];
.Arcyóu (nicht konkurrierend), 93 Bytes
Diese Einreichung verwendet eine Version der Sprache, die nach dieser Herausforderung erstellt wurde.
Yeesh! Diese Sprache benötigt eine bessere String-Manipulation.
Erläuterung:
quelle
Ruby,
747371 Bytes73 Bytes
74 Bytes:
Verwendung:
quelle
Kotlin, 132 Bytes
Ungolfed Version:
Teste es mit:
Beispielausgaben:
quelle
Im Ernst , 77 Bytes
Ernst ist ernsthaft nicht gut bei der Manipulation von Saiten. Probieren Sie es online mit vollständiger Erklärung aus (Sie müssen die Eingabe wie folgt manuell eingeben,
"210 mins"
da Permalinks keine Anführungszeichen mögen).Schnelle und schmutzige Erklärung:
quelle
Java 8, 148 Bytes
Ich habe mich für eine Alternative zu @TheAustralianBirdEatingLouse entschieden, da diese nicht nur um ein Vielfaches (~ 10%) kürzer ist, sondern auch korrekter in Stunden und Minuten statt abgekürzter Stunden und Minuten gedruckt wird. Methodenimplementierungen in Interfaces sind neu in Java 8 - daher wird dies zum Kompilieren / Ausführen benötigt
quelle