Виклик:
Напишіть функцію або програму, яка приймає список булевих значень і повертає всі діапазони True.
Випробування:
f [F] = []
f [T] = [[0,0]]
f [T,T,F,T] = [[0,1],[3,3]]
f [F,T,T,F,F,T,T,T] = [[1,2],[5,7]]
f [F,T,T,F,F,F,T,T,T,T] = [[1,2],[6,9]]
f [T,T,F,F,F,T,T,T,T,T,T,T,T,T,T,F] = [[0,1],[5,14]]
f [F,F,T,T,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T] = [[2,3],[12,19],[33,54],[93,94]]
Правила:
- Ви можете вибрати, як кодується вхід, наприклад, список, масив, рядок тощо.
- Вихід повинен бути закодований у вигляді списку-лайків списку або рядка, що відображає таке, тому масиви, списки, кортежі, матриці, вектори тощо.
- Булеві значення повинні бути кодовані як константи, але в іншому випадку дозволено будь-яке просте перетворення T / F в потрібні константи
- EDIT: eval або подібне під час виконання IS дозволено.
- Не забудьте пояснити, як вхід передається програмі / функції та дайте свій вхід / вихід для тестових випадків
- Перерахунок у потрібний формат введення не враховується
- Стандартні лазівки заборонені
- Якщо ваша мова має функцію для цього, це заборонено
- Я не прийму власного подання
- EDIT: Формат виводу гнучкий. Якщо не друкується список або подібне, значення діапазону повинні бути розділені одним нечисловим символом та окремими діапазонами.
Оцінка:
- Оцінка в байтах, якщо не відповідає вашій мові (наприклад, коделі в Piet)
- Виграє найнижчий рахунок
Існує хороша гнучкість введення та виведення, але рішення, де T / F замінюються функціями, які виконують всю роботу, заборонені.
Налагодження:
Якщо ви пишете своє в Haskell або можете зателефонувати йому з Haskell, перевірте вашу функцію / програму:
import Test.QuickCheck
tf = cycle [True,False]
gen l = foldl (++) [] $ map (\i -> [tf!!i | x<-[1..i]]) l
putIn (a,b) l = zipWith (||) l [(a <= p) && (p <= b) | p <- [0..length l]]
putAllIn rs len = foldr putIn [False|i<-[1..len]] rs
main = print $ quickCheck (check functionNameGoesHere)