Ziel: Dieses Ziel ist es, einen String zu nehmen und auszugeben, wie viele Beiträge an welchen Tagen gemacht werden sollen, um eine Nachricht anzuzeigen.
Spezifikation
- Eingang
- Unterstützung Buchstaben plus Speicherplatz (dh
[A-Za-z ]
) - Der Raum ist ein Leerzeichen
3X7
- Die Buchstaben sind in der unten angegebenen 5x7 DOT Matrix- Schriftart definiert
- Die Größe der einzelnen Buchstaben ist das minimale Begrenzungsrechteck (z
l = 3x7
,e = 5x5
)
- Unterstützung Buchstaben plus Speicherplatz (dh
- Färbung
- Es gibt 5 Farben
C0, C1, C2, C3, C4
CX
erfordertY
Beiträge mit3X <= y < 3(X+1)
- Buchstaben sollten zwischen
C1
und wechselnC2
- Leerzeichen haben keine Farbe
- Jede Buchstabengröße sollte genau 1 Spalte mit benachbarten Buchstaben überlappen
- Wenn eine Zelle mehr als eine Farbe hat, verwenden Sie
C3
- Es gibt 5 Farben
- Punktmatrix
- Die Punktmatrix ist Githubs Beitragshistoriendiagramm
- Wenn heute Montag, der 1. Mai 2017 ist:
4-30 5-07 5-15
[5-01] 5-08 5-16
5-02 5-09 .
5-03 5-10 .
5-04 5-12 .
5-05 5-13
5-06 5-14
- Ausgabe
- Flexibel, wie dies gegeben ist
(x, y)
Paarex
ist ein Datum, das größer oder gleich dem aktuellen Datum isty
ist die Anzahl der am Tag zu leistenden Beiträge,x
- Sollte in chronologischer Reihenfolge sein (damit ich meinen Kalender ausfüllen kann)
- Wenn für jedes Datum
x
die angegebeneny
Beiträge geleistet werden, sollte die Eingabemeldung im Github-Diagramm angezeigt werden (mit der richtigen Färbung). - Der erste Termin sollte so früh wie möglich sein
- Wertung
- Kürzeste Programm / Funktion in Bytes gewinnt
Alphabet
Erstellt von sylvan.black unter CC
Testfälle
Nehmen Sie für diese Testfälle an, dass das aktuelle Datum der 25. Mai 2017 ist.
Input -> Output
----- ------
l 5-28-17, 3
6-3-17, 3
6-4-17, 3
6-5-17, 3
6-6-17, 3
6-7-17, 3
6-8-17, 3
6-9-17, 3
6-10-17, 3
6-17-17, 3
He 5-28-17, 3
5-29-17, 3
5-30-17, 3
5-31-17, 3
6-1-17, 3
6-2-17, 3
6-3-17, 3
6-7-17, 3
6-14-17, 3
6-21-17, 3
6-25-17, 3
6-26-17, 3
6-27-17, 3
6-28-17, 9
6-29-17, 9
6-30-17, 9
7-1-17, 3
7-4-17, 6
7-6-17, 6
7-8-17, 6
7-11-17, 6
7-13-17, 6
7-15-17, 6
7-18-17, 6
7-20-17, 6
7-22-17, 6
7-26-17, 6
7-27-17, 6
o W 5-31-17, 3
6-1-17, 3
6-2-17, 3
6-6-17, 3
6-10-17, 3
6-13-17, 3
6-17-17, 3
6-20-17, 3
6-24-17, 3
6-28-17, 3
6-29-17, 3
6-30-17, 3
7-9-17, 6
7-10-17, 6
7-11-17, 6
7-12-17, 6
7-13-17, 6
7-14-17, 6
7-22-17, 6
7-26-17, 6
7-27-17, 6
7-28-17, 6
8-5-17, 6
8-6-17, 6
8-7-17, 6
8-8-17, 6
8-9-17, 6
8-10-17, 6
8-11-17, 6
May 20th, 2017: 3
,(3,"20/5/17")
)Antworten:
JavaScript (ES6), 743 Byte
Die Ausgabe ist ein Array von 2-Element-Arrays im Formular
[dateString, contribs]
. Das folgende Snippet zeigt, wie dies so formatiert werden kann, dass es besser lesbar ist.Ungolfen
Wobei
<...>
die 364-Byte-Zeichenfolge darstellt, die ich erstellt habe, um die Punktmatrixform jedes Buchstabens zu codieren.Erläuterung
Die codierte Zeichenfolge:
Alle 7 Zeichen sind eine Base-36-codierte Binärzahl, die die Zuordnung für das Zeichen an diesem Index enthält. Die binäre Form hat immer eine führende
1
, um die führende zu erhalten0
s . Zum Beispiel kann ein GroßT
abbildetnqmi6o0
, die Konvertiten1100 00001000 00011111 11100000 01000000
. Überspringen der führenden 1, jedes Bit ist ein Tag. Die meisten Zahlen haben 5 Spalten / Woche, also haben die Zahlen mit weniger als 5 Spalten ein oder zwei Sätze mit 7 nachgestellten Nullen, die später vor dem Parsen entfernt werden (.replace(/(0{7})+$/,"")
). Dadurch bleiben alle codierten Zeichenfolgen gleich lang, sodass keine Begrenzer erforderlich sind.Es gibt wahrscheinlich noch weitere Möglichkeiten, dies zu verbessern, insbesondere wenn die Buchstabenzuordnungen weiter komprimiert werden. Teilen Sie Ihre Ideen mit.
Binäres Format der Buchstabenzuordnungen (JS-Syntax, vorangestellt mit
0b
) finden Sie hier .Grundlegendes Snippet
Interaktives Beispiel
Mit der Bibliothek cal-heatmap habe ich eine interaktive Heatmap der ausgegebenen Daten erstellt. Dies wurde verwendet, um alles während der Arbeit zu testen, und es sieht einfach ordentlich aus.
quelle