Резюме
З урахуванням вхідних даних, що представляють два вектори та їх відповідні "ваги", дають вихід, який також представляє зважену суму цих векторів.
Виклик
Вхід складається з одного або декількох рядків з наступних символів:
- рівно одне виникнення цифри 0, що представляє початок у двовимірній площині;
- рівно дві інші цифри (1-9; можуть бути або не бути однаковою цифрою), позиції яких відносно походження представляють вектори, а значення яких представляють ваги, приєднані до цих векторів;
- деяку кількість "фонових символів". Розв’язувач може вибрати конкретний фоновий символ; наприклад, я оберу "". (переважно для людської читабельності). Крім того, фоновими символами може бути все, що виглядає як порожній пробіл.
(Розв’язувач може вибрати, чи є вхід однорядковою рядком або масивом однорядних рядків.)
Наприклад, вхід
....2
.0...
...3.
являє собою вектор за координатами (3,1) з масою 2 і вектор за координатами (2, -1) з вагою 3.
Вихід повинен бути майже таким же, як і вхід, із такими змінами:
- "символу результату", обраного розв'язувачем, який слід додати у положенні, визначеному зваженою сумою вхідних векторів (еквівалентно, у положенні, що є відповідною лінійною комбінацією вхідних векторів);
- стільки фонових символів, скільки потрібно, щоб підходити до початку, двох вхідних векторів та вихідного вектора на одному зображенні. За бажанням можна включити додаткові символи фону; Єдине обмеження полягає в тому, що якщо фоновий символ є видимим символом, то весь вихід повинен мати прямокутну форму, і кожен символ, що не представляє вектор, повинен бути фоновим символом. (Якщо порожній пробіл використовується як фонові символи, то ці обмеження не потрібно виконувати.)
(Загалом, якщо ми маємо один вектор (v, w) з вагою a і другий вектор (x, y) з вагою b, їх зважена сума a (v, w) + b (x, y) = (av + bx, aw + by).)
У попередньому прикладі відповідна лінійна комбінація - 2 * (3,1) + 3 * (2, -1) = (12, -1). Якщо ми використовуємо "X" в якості символу результату, то результат може виглядати таким чином
....2.........
.0............
...3.........X
або
................
...2............
0...............
..3.........X...
................
................
Звичайне підрахунок коду-гольфу : виграє найкоротша відповідь у байтах.
Приклад введення та виведення
Якщо використовується порожній пробіл, виглядатиме вищевказаний ввід
2
0
3
і вихід виглядатиме так
2
0
3 X
Провідні / кінцеві символи / рядки пробілу не мають значення; якщо вони непомітні для читача, це добре. (Коли це сказано, для решти прикладів я повернусь до використання "" "для фонового символу, щоб полегшити його читання.)
Якщо обидва вектора мають вагу 1, то результат буде виглядати як паралелограм: вхід
.1.
...
1.0
веде до виходу
X.1.
....
.1.0
Зауважте, що цей паралелограм може бути виродженим, якщо вхідні вектори колінеарні: вхідні
0.1..1
веде до виходу
0.1..1.X
Можна, щоб вектор результату дорівнював одному з вхідних векторів або початку; у цьому випадку він просто перезаписує вхідний символ. Наприклад, вхід
..2.0.1...
дає вихід
..X.0.1...
(де у вхідному та / або вихідному періодах провідний та кінцевий періоди можуть бути видалені). Вхід
.....3
......
...0..
......
......
2.....
дає вихід
.....3
......
...X..
......
......
2.....
Нарешті, вхід
90
.8
дає вихід
........90
.........8
..........
..........
..........
..........
..........
..........
X.........