Stellen Sie sich vor, Sie haben zwei Lichter. Diese Lichter blinken mit einer bestimmten Geschwindigkeit ein und aus:
Light 0: Delay 0ms and then blink every 1000ms
Light 1: Delay 500ms and then blink every 1000ms
Simulieren wir diese Lichter für die ersten 2000 ms:
0ms: Light 0 on
500ms: Light 1 on
1000ms: Light 0 off
1500ms: Light 1 off
2000ms: Light 0 on
Die Herausforderung
Schreiben Sie anhand einer Liste geordneter Paare, die das Timing für Lichter darstellen, ein Programm oder eine Funktion, um die Sequenz für das Blinken auszugeben.
Eingang
Die Eingabe sollte im folgenden Format vorliegen:
TimeToSimulate
Light0Delay,Light0Period
Light1Delay,Light1Period
...
In diesem Format wäre das obige Beispiel:
2000
0,1000
500,1000
Ausgabe
Die Ausgabe sollte eine Reihe von geordneten Tripeln sein:
Time,LightNum,LightStatus
LightStatus ist ein wahrer Wert, wenn das Licht eingeschaltet wird, und ein falscher Wert, wenn das Licht ausgeschaltet wird.
Die Ausgabe des obigen Beispiels wäre:
0,0,True
500,1,True
1000,0,False
1500,1,False
2000,0,True
Wenn zwei Lichter gleichzeitig blinken, sollte das Licht mit der niedrigeren Nummer zuerst im Ausgang angezeigt werden.
Andere Sachen
- Die Eingabe- und Ausgabeformate sind nicht streng
- Code sollte keine Fehler erzeugen
- Die Lösung sollte nicht auf den Rennbedingungen beruhen
- Keine Standardlücken
- Dies ist Code-Golf , also gewinnt die kürzeste Lösung!
Testfälle
Input:
2000
0,1000
500,1000
Output:
0,0,True
500,1,True
1000,0,False
1500,1,False
2000,0,True
----
Input:
2
0,1
0,1
Output:
0,0,True
0,1,True
1,0,False
1,1,False
2,0,True
2,1,True
----
Input:
500
100,50
200,100
300,150
Output:
100,0,True
150,0,False
200,0,True
200,1,True
250,0,False
300,0,True
300,1,False
300,2,True
350,0,False
400,0,True
400,1,True
450,0,False
450,2,False
500,0,True
500,1,False
----
Input:
1000
23,345
65,98
912,12
43,365
Output:
23,0,True
43,3,True
65,1,True
163,1,False
261,1,True
359,1,False
368,0,False
408,3,False
457,1,True
555,1,False
653,1,True
713,0,True
751,1,False
773,3,True
849,1,True
912,2,True
924,2,False
936,2,True
947,1,False
948,2,False
960,2,True
972,2,False
984,2,True
996,2,False
Leaderboard-Snippet:
var QUESTION_ID=137465,OVERRIDE_USER=41505;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>
Antworten:
JavaScript,
9897 BytesProbieren Sie es online aus
Dank Shaggy ein Byte gespeichert - verwenden Sie die Currying-Eingabesyntax.
quelle
a=>b=>
.Python 2 , 93 Bytes
Probieren Sie es online aus!
quelle
Gelee ,
2625 BytesEine dyadische Verknüpfung, die eine Liste von
delay, period
Nummernlisten und eine Zeitrahmennummer enthält und eine Liste vontime, light, action
Ganzzahlen zurückgibt.Die Lichter sind 1-indiziert und
0
repräsentieren die Aktion "Aus", während1
sie die Aktion "Ein" darstellen.Probieren Sie es online aus!
Wie?
quelle
Python 2 ,
206214 BytesProbieren Sie es online aus!
Dieser Code erzeugt eine ungeordnete Liste, die die Schaltzeiten jedes Lichts enthält, diese Zeiten und die Lichtkennung auffüllt, diese Liste sortiert und ausgibt.
quelle
input()
auch die Anzahl der Bytes verringern können (es ist kein String-Parsing erforderlich, da dies bei Python 2 der Fallinput()
isteval(raw_input())
) :).O
diese sortiert, was wahrscheinlich auch die Anzahl der Bytes verringern würdePerl 5 , 106 + 1 (-n) = 107 Bytes
Probieren Sie es online aus!
quelle
Haskell, 121 Bytes
Probieren Sie es online aus.
Dies ist das Programm, mit dem ich begonnen habe:
Und vor dem letzten Golfen habe ich es verkürzt auf:
quelle
Röda ,
1058785 BytesProbieren Sie es online aus!
Erläuterung:
Der Stream enthält Punktwerte
[1]
in der folgenden Reihenfolge:Der Stream enthält Punktwerte
[2]
in der folgenden Reihenfolge:Der Stream enthält an Punkt
[3]
Arrays mit folgender Struktur:quelle