Streszczenie wykonawcze
Biorąc pod uwagę dane wejściowe reprezentujące dwa wektory i ich odpowiednie „wagi”, uzyskaj dane wyjściowe, które reprezentują również ważoną sumę tych wektorów.
Wyzwanie
Dane wejściowe będą się składać z co najmniej jednego wiersza następujących znaków:
- dokładnie jedno wystąpienie cyfry 0, która reprezentuje początek w płaszczyźnie dwuwymiarowej;
- dokładnie dwie inne cyfry (1-9; mogą, ale nie muszą być tą samą cyfrą), których pozycje w stosunku do źródła reprezentują wektory, a których wartości reprezentują wagi przypisane do tych wektorów;
- pewna liczba „znaków tła”. Solver może wybrać konkretny znak tła; na przykład wybiorę „.” (głównie dla czytelności dla ludzi). Alternatywnie, znakami tła mogą być cokolwiek, co wygląda jak puste miejsce.
(Solver może wybrać, czy wejście jest pojedynczym ciągiem wieloliniowym, czy tablicą ciągów jednowierszowych.)
Na przykład dane wejściowe
....2
.0...
...3.
reprezentuje wektor o współrzędnych (3,1) o wadze 2 i wektor o współrzędnych (2, -1) o wadze 3.
Dane wyjściowe powinny być prawie takie same jak dane wejściowe, z następującymi zmianami:
- „znak wyniku” wybrany przez solver, który ma zostać dodany w pozycji określonej przez ważoną sumę wektorów wejściowych (równoważnie w pozycji, która jest odpowiednią liniową kombinacją wektorów wejściowych);
- tyle znaków tła, ile potrzeba, aby dopasować początek, dwa wektory wejściowe i wektor wyjściowy na tym samym obrazie. W razie potrzeby można dołączyć dodatkowe znaki tła; jedynym ograniczeniem jest to, że jeśli znak tła jest znakiem widocznym, wówczas cały wynik musi mieć kształt prostokątny, a każdy znak nie reprezentujący wektora musi być znakiem tła. (Jeśli jako znaki tła używane jest puste miejsce, ograniczenia te nie muszą być egzekwowane.)
(Na ogół, jeśli mamy jeden wektor (v, w) o wadze a i drugi wektor (x, y) o wadze b, ich ważona suma to a (v, w) + b (x, y) = (av + bx, aw + by).)
W poprzednim przykładzie odpowiednią kombinacją liniową jest 2 * (3,1) + 3 * (2, -1) = (12, -1). Jeśli użyjemy „X” jako znaku wynikowego, wynik może wyglądać następująco
....2.........
.0............
...3.........X
lub
................
...2............
0...............
..3.........X...
................
................
Zwykle punktowanie w golfa : wygrywa najkrótsza odpowiedź w bajtach.
Przykładowe wejście i wyjście
Jeśli zostanie użyte puste miejsce, powyższe dane wejściowe będą wyglądać
2
0
3
i wyglądałby wynik
2
0
3 X
Wiodące / końcowe białe znaki / linie są nieistotne; jeśli są niewidoczne dla czytelnika, jest w porządku. (Biorąc to pod uwagę, w pozostałych przykładach wrócę do używania „.” Jako znaku tła, aby ułatwić czytanie.)
Jeśli oba wektory mają wagę 1, wynik będzie wyglądał jak równoległobok: dane wejściowe
.1.
...
1.0
prowadzi do wyjścia
X.1.
....
.1.0
Zauważ, że ten równoległobok może zostać zdegenerowany, jeśli wektory wejściowe są współliniowe: wejście
0.1..1
prowadzi do wyjścia
0.1..1.X
Wektor wynikowy może być równy jednemu wektorowi wejściowemu lub źródłu; w takim przypadku po prostu nadpisuje znak wejściowy. Na przykład dane wejściowe
..2.0.1...
daje wynik
..X.0.1...
(w przypadku wejścia i / lub wyjścia można usunąć początkowe i końcowe okresy). Dane wejściowe
.....3
......
...0..
......
......
2.....
daje wynik
.....3
......
...X..
......
......
2.....
Wreszcie dane wejściowe
90
.8
daje wynik
........90
.........8
..........
..........
..........
..........
..........
..........
X.........