Вступление:
(Источник: Википедия )
Когда мы смотрим на радугу, она всегда будет иметь цвета сверху вниз:
красный; апельсин; желтый; зеленый; синий; индиго; Фиолетовый
Если мы посмотрим на эти отдельные кольца, красное кольцо, конечно, больше, чем фиолетовое кольцо.
Кроме того, также возможно иметь две или даже три радуги одновременно.
Все это, вместе взятые, будет использовано в этой задаче:
Вызов:
Учитывая список целых чисел с точным размером 7, где каждое значение указывает цветовые частицы, доступные для формирования радуг (где наибольший индекс указывает на красный, а наименьший индекс указывает на фиолетовый), выведите количество радуг, которые могут быть сформированы.
Одна целочисленная радуга должна иметь как минимум 3 фиолетовых, 4 индийских, 5 синих, 6 зеленых, 7 желтых, 8 оранжевых, 9 красных. Вторая радуга на вершине будет даже больше, чем красное кольцо первой радуги (включая один пробел между ними), поэтому для нее потребуется как минимум 11x фиолетовая, 12x индиго, 13x синяя, 14x зеленая, 15x желтая, 16x оранжевая , 17x красный в дополнение к тому, что использует первая радуга. Третья радуга снова начнется с 19x фиолетового цвета.
Пример:
Input-list: [15,20,18,33,24,29,41]
Output:2
Почему? У нас есть 15x фиолетовый, и нам нужно по крайней мере 3 + 11 = 14 для двух радуг. У нас есть 20 индиго, и нам нужно по крайней мере 4 + 12 = 16 для двух радуг. И т.д. У нас достаточно цветов для двух радуг, но недостаточно, чтобы сформировать три радуги, так что получается 2
.
Правила вызова:
- Целые числа во входном массиве гарантированно будут неотрицательными (
>= 0
). - Входной список гарантированно будет иметь размер 7 точно.
- Когда радуги не образуются, мы выводим
0
. - Формат ввода и вывода является гибким. Может быть списком или массивом целых десятичных чисел, может быть взят из STDIN. Вывод может быть возвратом из функции в любом приемлемом типе вывода или распечатываться непосредственно в STDOUT.
Минимальное количество цветов, необходимое для n
количества радуг:
Amount of Rainbows Minimum amount per color
0 [0,0,0,0,0,0,0]
1 [3,4,5,6,7,8,9]
2 [14,16,18,20,22,24,26]
3 [33,36,39,42,45,48,51]
4 [60,64,68,72,76,80,84]
5 [95,100,105,110,115,120,125]
etc...
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте найти как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
Тестовые случаи:
Input: [15,20,18,33,24,29,41]
Output: 2
Input: [3,4,5,6,7,8,9]
Output: 1
Input: [9,8,7,6,5,4,3]
Output: 0
Input: [100,100,100,100,100,100,100]
Output: 4
Input: [53,58,90,42,111,57,66]
Output: 3
Input: [0,0,0,0,0,0,0]
Output: 0
Input: [95,100,105,110,115,120,125]
Output: 5
Input: [39525,41278,39333,44444,39502,39599,39699]
Output: 98
0,0,0,0,0,0,0
Край случай , хотя :( (это не вяжется с логикой 1-разрыва)