Доброго дня гольфісти,
Сьогодні наше виклик натхненний коміксами 356 та 370 XKCD . Ми збираємось написати програму для обчислення опору групи резисторів. Попередження про те, що це майже досить складно, щоб вимагати кодового виклику, проте я думаю, що є певне мистецтво писати трохи складніші програми у форматі для гольфу. Виграє найменша кількість символів.
Розрахунок опору спирається на дві наступні формули:
- Якщо резистори є послідовними, опір - це сума опору кожного резистора
- Якщо резистори знаходяться паралельно, опір є оберненою сумою оберненого опору кожного резистора
Так - наприклад:
Ваше завдання полягає в тому, щоб якомога менше символів обчислити опір групи до 64 резисторів. Мої вибачення за складність, особливо за правила введення. Я намагався їх визначити таким чином, що кожна мова буде корисною.
Кожен резистор буде підключений до 2 або більше інших резисторів.
Гарантія вводу є дійсною, лише один вхід і одна точка виходу, яка підключиться
Мережа буде послідовно паралельною, щоб не вимагати більше математики, ніж представлена
Введення даних здійснюється через файл, аргумент або stdin, залежно від того, що підходить для вашої мови.
Вхід буде складатися з ряду розділених висловлювань прямої чи прямої лінії, що складається з цілого числа опору резистора та пробілів, що розділяють ідентифікатори резисторів, до яких підключена одна сторона резистора.
Ідентифікатор першого резистора становитиме 1, збільшуючи по одному для кожного наступного резистора
Ідентифікатор старту завжди матиме 0
Кінцевий резистор завжди буде мати опір 0 Ом і матиме лише з'єднання, визначені в його лінії
Наприклад:
Можна представити як
3 0
6 1
1 0
5 0
0 2 3 4
- Вихід може бути stdout або файл. Він може бути представлений одним із наступних способів:
- Число, що містить мінімум 2 десяткових знаки, а потім новий рядок
- Фракція, що складається з цілого числа (чисельник), косою косою рисою та іншого цілого числа (знаменника), після чого йде новий рядок. Фракція не повинна бути такою, щоб вона була в найнижчому вигляді - 4/4 або 10/8, наприклад, прийнятні. Фракція повинна бути точною в межах 1/100. Немає бонусу за ідеальну точність - це умова, що дозволяє мовам без операцій з фіксованою або плаваючою точкою конкурувати.
Я сподіваюся, що охоплює всі моменти. Удачі!
1 2/1 0/0 1
дійсно?
/
не є зворотною косою рисою. Ви мали на увазі `\` або нахил вперед?