Завдання полягає у реалізації двовимірної програми трасування променів на основі тексту.
Джерелами білого світла є @символи. R, Gі Bє світлофільтрами. /і \є дзеркалами з 80% відбиткою. ?є датчиком світла. >, <, ^І Vоб'єднати світло в потрібному напрямку (наприклад , якщо один червоний і один зелений прийшов в >світ випромінюватиметься в напрямку вправо і буде жовтим кольором). Інші символи, що не мають пробілу, поглинають усе світло. Світло випромінюється від @символів у чотирьох напрямках.
Коли програма запущена, вона повинна видавати вихід такий же, як і вхід, але із простеженими променями. Оскільки це двовимірне, і я гарантую, що на вході жодні промені ніколи не перетнуться, з цим не буде проблем. Кожен промінь повинен бути представлений буквою; r = червоний, g = зелений, b = синій, c = синій, m = пурпурний, y = жовтий, w = білий. Ніколи не буде жодних потрійних кольорів. Корпус важливо відрізняти його від вхідного. Після цього виходу значення світла, захопленого знаками запитання (у порядку їх появи, зліва направо зверху вниз), слід виводити у відсотках та кольорах. Наприклад, цей вхід:
/ @
-
\R> ?
@B/
Слід дати вихід:
/wwwwwwwwwwwwwwwwww@w
w -
w\R>mmmmmmmmmmmmmmmmm?
w b
@B/
#1: 72% Magenta
Ще один важливий момент, який слід зазначити - коли два кольори поєднуються за допомогою «призми» (стрілки), сила комбінованого світла стає середньою силою двох. Вихід повинен бути точно вказаний (наприклад, # x: [x] [x] x% Колір ).
Якщо ваша мова не може читати з STDIN і писати в STDOUT, створіть функцію (анонімна або лямбда-версія, якщо вона доступна), яка приймає введення як аргумент і повертає результат.
Директиви щодо компілятора, структури, необхідні або рекомендовані для всіх або більшості програм, створених мовою тощо, можуть бути опущені. Наприклад, #includeі usingдирективи (але не #define) можуть бути видалені на мовах стилю С, #/usr/bin/perl -optionsна Perl та
Module Module1
Sub Main()
End Sub
End Module
наприклад, у VB.NET Якщо ви імпортуєте простори імен або додаєте директиви, що включають, врахуйте їх у своїй відповіді.
Зараз це досить важко? :)
>це захоплення світла, яке йде прямо повз нього. І якщо wвершина проходить через це R, то так само bі знизу. Нарешті (я думаю) ви помиляєтесь, що промені не перетинаються. Щоб навести однорядковий приклад, яким би був правильний вихід @R> B@?
@внизу зліва випромінює світло у всіх чотирьох напрямках, чи не так? Так, зокрема, це випромінює w. І я не порушив жодного інтервалу, принаймні, як це було зроблено в Chromium. Щодо того, щоб пройти прямо повз нього, моя редакція може зрозуміти це.