Добрый день, гольфисты,
Наша задача на сегодняшний день вдохновлена комиксами XKCD 356 и 370 . Мы собираемся написать программу для расчета сопротивления группы резисторов. Предупреждая, что это почти достаточно сложно, чтобы оправдать проблему кода, однако я думаю, что есть определенный навык в написании немного более сложных программ в формате гольфа. Наименьшее количество символов выигрывает.
Расчет сопротивления основывается на следующих двух формулах:
- Если резисторы включены последовательно, сопротивление является суммой сопротивления каждого резистора.
- Если резисторы параллельны, сопротивление является обратной величиной суммы обратных сопротивлений каждого резистора.
Итак - например:
Ваша задача состоит в том, чтобы при минимальном количестве символов рассчитать сопротивление группы из 64 резисторов. Мои извинения за сложность, особенно правила ввода. Я попытался определить их таким образом, чтобы каждый язык был пригоден для использования.
Каждый резистор будет подключен к 2 или более другим резисторам.
Вход гарантированно действителен, только с одним входом и одной точкой выхода, которая соединит
Сеть будет параллельной, чтобы не требовалось больше математики, чем указано
Ввод будет через файл, аргумент или стандартный ввод, в зависимости от того, что подходит для вашего языка.
Входные данные будут состоять из ряда разделенных операторов новой строки или косой черты, состоящих из целого числа сопротивления резистора и пробелов, разделяющих идентификаторы резисторов, к которым подключена одна сторона резистора.
Идентификатор первого резистора будет 1, увеличиваясь на единицу для каждого последующего резистора
Старт всегда будет иметь идентификатор 0
Конечный резистор всегда будет иметь сопротивление 0 Ом, и в его линии будут только те соединения, которые определены
Например:
Может быть представлен как
3 0
6 1
1 0
5 0
0 2 3 4
- Вывод может быть в стандартный вывод или файл. Это может быть представлено одним из следующих способов:
- Число с минимум двумя десятичными разрядами, за которым следует новая строка
- Часть, состоящая из целого числа (числитель), косой черты и другого целого числа (знаменатель), за которым следует символ новой строки. Фракция не обязательно должна быть в ее самой низкой форме - например, 4/4 или 10/8 приемлемы. Фракция должна быть точной в пределах 1/100. Бонус за то, что он абсолютно точен, не предоставляется - это костыль, позволяющий конкурировать языкам без операций с фиксированной или плавающей запятой.
Я надеюсь, что это охватывает все моменты. Удачи!
/
это не обратный слеш Вы имели в виду `\` или косую черту?1 2/1 0/0 1
действительным?Ответы:
APL 190
Начало индекса 1. Первый (ые) контур (ы) объединяет все резисторы, соединенные последовательно, второй (p) - параллельные и повторяющиеся в первый контур, чтобы объединить любые параллельные резисторы, включенные последовательно. Спецификация конечного нулевого резистора представляется избыточной.
Проверено на примерах в вопросе плюс немного более сложный:
источник
o←⊃↑¨r←¯1↓⍎¨(c≠'/')⊂c
. Эта модель применима в нескольких местах.Python, 329 символов
Вычисляет сопротивление, выполняя ослабление напряжения в цепи. Сначала он подключает резистор с сопротивлением 1 Ом к старту и меняет последний резистор с 0 Ом на 1 Ом. Затем он устанавливает входное напряжение на 0, а выходное напряжение на 1 вольт. После моделирования протекания тока через сеть, сопротивление сети рассчитывается с использованием падения напряжения на первом резисторе на 1 Ом.
Каждому резистору присваиваются два числа: номер для его левой клеммы и номер для его правой клеммы. Левая клемма резистора r - 2 * r, а его правая клемма - 2 * r + 1. Вход используется для расчета
S
наборов терминалов, которые соединены вместе. Каждой клемме дается напряжение,V[t]
а ослабление достигается повышением напряжения, если ток является чистым, протекающим в набор клемм, и снижением напряжения, если ток протекает нетто.источник
(Это комментарий, но я не могу сделать ascii art в реальном комментарии ...)
Как вводится что-то подобное?
В частности, с чем связаны 3 и 4? 1 или 2, или оба 1 и 2?
источник