Cel: ten cel polega na pobraniu ciągu znaków i wyświetleniu, ile wkładów należy przekazać w które dni, aby wyświetlić komunikat.
Specyfikacja
- Wejście
- Litery pomocnicze plus spacja (tj.
[A-Za-z ]
) - Przestrzeń jest pusta
3X7
- Litery są zdefiniowane w poniższej czcionce DOT Matrix 5x7
- Wielkość każdej z liter jest prostokąt minimalna ograniczający (na przykład
l = 3x7
,e = 5x5
)
- Litery pomocnicze plus spacja (tj.
- Kolorowanie
- Jest 5 kolorów
C0, C1, C2, C3, C4
CX
wymagaY
wkładów z3X <= y < 3(X+1)
- Litery powinny występować na przemian między
C1
iC2
- Przestrzenie nie mają koloru
- Każdy rozmiar litery powinien pokrywać się dokładnie z 1 kolumną z sąsiadującymi literami
- Jeśli komórka ma więcej niż 1 kolor, użyj
C3
- Jest 5 kolorów
- Matryca punktowa
- Macierz kropkowa to wykres historii wkładu Githuba
- Jeśli dzisiaj jest poniedziałek, 1 maja 2017 r .:
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
- Wynik
- Elastyczny sposób, w jaki jest to podane
(x, y)
paryx
jest datą większą lub równą bieżącej daciey
oznacza liczbę składek do wniesienia w dniu,x
- Powinien być w porządku chronologicznym (aby wypełnić kalendarz)
- Jeśli dla każdej daty
x
zostaną podaney
dane, komunikat wejściowy powinien pojawić się na wykresie Github (z prawidłowym kolorowaniem) - Pierwsza data powinna być najwcześniej możliwa
- Punktacja
- Najkrótszy program / funkcja w bajtach wygrywa
Alfabet
Utworzony przez sylvan.black w ramach CC
Przypadki testowe
Dla tych przypadków testowych załóż, że bieżącą datą jest 25 maja 2017 r.
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")
)Odpowiedzi:
JavaScript (ES6), 743 bajty
Dane wyjściowe to tablica 2-elementowych tablic w formularzu
[dateString, contribs]
. Poniższy fragment kodu pokazuje, jak można go sformatować, aby był bardziej czytelny.Bez golfa
Gdzie
<...>
reprezentuje 364-bajtowy ciąg znaków, który utworzyłem w celu zakodowania matrycy kropkowej każdej litery.Wyjaśnienie
Zakodowany ciąg:
Każde 7 znaków to liczba binarna zakodowana w podstawie 36, która zawiera odwzorowanie znaku pod tym indeksem. Forma binarna zawsze ma wiodące
1
, aby zachować wiodące0
. Na przykład wielka literaT
odwzorowuje nanqmi6o0
, co konwertuje na1100 00001000 00011111 11100000 01000000
. Pomijając wiodącą 1, każdy bit to jeden dzień. Większość liczb ma 5 kolumn / tygodni, więc liczby z mniej niż 5 kolumnami mają jeden lub dwa zestawy 7 zer końcowych, które są później usuwane przed analizą (.replace(/(0{7})+$/,"")
). Dzięki temu wszystkie zakodowane ciągi mają tę samą długość, co eliminuje potrzebę stosowania ograniczników.Prawdopodobnie jest jeszcze więcej sposobów, aby to poprawić, szczególnie poprzez dalsze kompresowanie mapowań liter, więc dziel się dowolnymi pomysłami.
Format binarny odwzorowań liter (składnia JS, z prefiksem
0b
) można znaleźć tutaj .Podstawowy fragment kodu
Interaktywny przykład
Korzystając z biblioteki cal-heatmap , stworzyłem interaktywną mapę cieplną dat, które są generowane. Służyło to do testowania wszystkiego podczas pracy i po prostu wygląda schludnie.
źródło