Списки у Ruby — це спосіб зберігати багато значень в одній змінній, ніби ви складаєте у рюкзак кілька предметів замість того, щоб носити їх по одному. У Ruby такі списки ще називаються масивами (arrays). Це просто впорядкована колекція елементів: чисел, слів, змішаних типів або навіть інших списків.
Зі списками можна робити багато корисних речей: додавати нові елементи, видаляти зайві, змінювати існуючі, шукати значення за номером, рахувати довжину або перебирати їх у циклі. Вони допомагають зберігати інформацію охайно, зручно та ефективно, і роблять ваш код набагато простішим та акуратнішим.

Уявіть, що вам треба зберегти не одне значення, а цілу колекцію чогось: наприклад, список улюблених ігор, оцінки з математики або топ-5 динозаврів за крутістю 🦖.
Звісно, можна було б створити 5 окремих змінних… Але якщо їх буде більше ?
Це вже звучить як мініпекло для програміста, правда? 😅
Саме для цього в Ruby існують списки (масиви) — зручні скриньки, де можна тримати багато даних одразу.
У одному масиві можна зберігати:
- числа
- рядки
- навіть змішані типи даних
- та навіть інші масиви (масив у масиві — level up!)
# 🔢 Масив із числами — можна зберігати рівні, очки або ID квестів
levels = [1, 2, 3, 4, 5]
puts "Levels: #{levels}"
# 💬 Масив зі словами (рядками) — список друзів, юзернеймів або команд
friends = ["Alice", "Bob", "Mia", "Luna"]
puts "Friends: #{friends}"
# 🎉 Змішані типи — Ruby дозволяє тримати різні типи в одному масиві
profile = ["Anika", 14, true]
puts "Profile: #{profile}"
# 🧊 Масив у масиві — інвентар гравця, розділи в додатку або меню
inventory = [
["🍕", "🍔", "🍟"], # їжа
["⚔️", "🛡️"], # екіпіровка
["💎", "🔑"] # скарби
]
puts "Inventory: #{inventory.inspect}"
# 🛒 Онлайн-магазин — масиви в масиві: товар + ціна
shop_items = [
["🍫", 20], # шоколад — 20 монет
["🚴♂️", 50], # транспорт — 50 монет
["🧪", 35] # зілля — 35 монет
]
puts "Shop items: #{shop_items.inspect}"
# 🤖 Дані робота — хеш, але всередині масив навичок
robot_data = {
name: "RoboMax",
skills: ["jump", "scan", "dance"], # масив умінь
battery: 87
}
puts "Robot data: #{robot_data}"Ruby дозволяє дуже легко додавати елементи, видаляти їх, шукати потрібне, рахувати довжину й робити багато інших магічних трюків.
Після сьогоднішнього уроку ви зможете:
✨ Створювати свої масиви
✨ Додавати в них елементи
✨ Брати елементи за номером
✨ Міняти та видаляти значення
✨ І навіть робити круті цикли по списках
Готові прокачати свій інвентар даних?
Практика. Списки у Ruby
Розкажіть про себе у смайликах!
Сьогодні ми розберемо функції списків, а заодно і розкажемо про себе за допомогою смайликів! Ось, що приблизно має вийти:

1: Смайлико-розповідь. Створіть список зі смайликів, які вас характеризують. Смайли можна взяти тут.

2: Спробуйте застосувати функції списків і зробити свій варіант анкети, схожої на цю:

Шок! Боти в нашій групі !!!
3: В нашу групу закрались боти. Знайдіть їх в списку і видаліть за допомогою функцій списків! Замініть 🤖 на змінну зі студентами вашої групи.
studentsOff = [
"Олівер", "Кирил","Вероніка", "Ібрагім", "Ліза",
"Варя", "Настя", "Діма","Міша К","Ібрагім", "Mike", "Даша",
"Сева", "Ібрагім", "Ярополк", "Горпина", "Захар", "Влад", "Ібрагім", "Микита","Ібрагім",
"Саша",, "Ібрагім", "Міша Д", "Мішель"
]
studentsOn = [
"Олівер", "Даня", "Таня", "Ібрагім", "Діана",
"Женя", "Міша Л.", "Ібрагім", "Ібрагім", "Віталік",
"Льоша", "Mike", "Еміль", "Ярополк", "Горпина", "Міша П.", "Ібрагім",
"Ваня", "Ярік", "Ібрагім",
"Діма", "Ібрагім", "Рома", "Мішель"
]
puts "Моя група з програмування: #{🤖.sort!}"
# 1. Подивіться на функції видалення
# і видаліть з групи кількох ботів, які потрапили в списки, але з нами не вчаться
# 🤖.pop # видаляє останній елемент списку
# 🤖.shift # видаляє перший елемент списку
# 🤖.delete_at(2) # видаляє вказаний елемент списку за індексом
# 🤖.delete("Ruby") # видаляє всі елементи з іменем "Ruby"
puts "У нас є такі імена: #{🤖.uniq}"Пояснення:
🤖.uniq – вивести лише унікальні значення
🤖.uniq! – вивести лише унікальні значення і перезаписати змінну 🤖
Випадковий вибір і тасування у списках

food = ["🍕", "🍔", "🍣", "🍩"]
shuffled = food.shuffle # перемішати елементи списку
puts "Перемішаний список: #{shuffled}"
one=food.sample # обрати випадковий елемент
puts "Випадковий елемент: #{one}" 4: 🧙♀️ Обираємо магічну паличку! У чарівних паличок є кілька властивостей :
wands_core – серцевина палички. Описує, на що вона здатна
wands_wood– дерево, з якого зроблена паличка
spells – список заклять, які може робити паличка
Серцевина палички:
“fire” → “🔥Палаюча сила!”
“ice” → “🧊Студений холод!”
“storm” → “💨Ти контролюєш бурю!”
“earth” → “🌎Сила землі!”
“water” → “💧Володарка хвиль!”
інше → “Це не паличка…”
З якого дерева може бути зроблена:
Гостролист holly
Дуб oak
Тис yew
Бузина elder
Горіх walnut
Береза birch
Бук beech
wands_core = ["fire", "ice", "storm", "earth", "water"]
wands_wood = ["holly", "oak", "yew", "elder", "walnut", "birch", "beech"]
spells = [
"🔥 Incendio", # створює вогонь
"💨 Expelliarmus", # вибиває чарівну паличку ворога
"💥 Stupefy", # оглушає суперника
"🛡 Protego", # магічний щит
"✨ Lumos", # світло з кінчика палички
"🌑 Nox", # вимикає світло
"🪄 Wingardium Leviosa", # підіймає предмети
"❄️ Glacius", # заморожує
"🌪 Depulso", # штовхає предмет геть
"🐍 Serpensortia", # викликає змію
"🌟 Expecto Patronum" # виклик патронуса
]Опис завдання:
- Скопіюйте у програму списки нижче.
- Створіть пустий список my_wand=[]. Туди згодом запишемо параметри магічної палички
- Оберіть випадковий елемент зі списку серцевин і запишіть у список my_wand.push(випадковий елемент)
- Оберіть випадковий елемент зі списку дерев і запишіть у список my_wand.push(випадковий елемент)
- Створіть оператор case: Допишіть пояснення до серцевин паличок. Див. підказку
- Створіть змінну elder. Якщо деревина, яка випала, це бук (elder ), програма має написати “Бузинна паличка, найстаріша і найсильніша”. Якщо випало будь-що інше вивести: “🪄”
- Список заклять перемішайте і виведіть на екран
- Виведіть випадкове закляття з написом: “Моє закляття:”
case
when my_wand.include?("fire") then puts "🔥Палаюча сила!"
...
else
...
end5(Додаткове): “П’ятий зайвий”. Створіть список з 5-ти речей, 4 з яких мають спільну властивість, а п’ятий завий. Видаліть зайвий елемент за допомогою функцій списків і виведіть новий список на екран.
Приклад: 🍎🫐🏀🧀🍟
6(Додаткове): Створіть список з 5 однокласників і окремо список з 5-ти шкільних лотерейних виграшей (наприклад “12 з математики”, “канікули на тиждень раніше”). Випадковим чином програма має обрати людин і виграш для неї

Домашня робота
1: Зробіть розповідь про себе у смайликах з класної роботи. Смайли можна взяти тут.
2: ”Загугли!”. (Для виконання можливо треба буде погуглити.) Скопіюйте код і зробіть те, що написано. В цьому завданні обов’язково все робити за допомогою функцій списків!
puts "Завдання: загугліть відповіді і виведіть їх за допомогою функцій списків"
puts "1. Зі списку видаліть назви штатів і лишіть тільки назви міст США"
cities= ["Texas","Alabama","Los Angeles",
"Dallas","Austin","Florida","Seattle",
"Washington","Ohio","Alaska","Miami"]
puts "2. З'єднайте і виведіть разом країну і острів, що їй належить. "
#Наприклад: #{country[0]} #{island[3]}
country= ["Denmark","Australia", "Spain","Italy"]
island= ["Canary Islands","Sicily", "Greenland","Tasmania"]

puts "3. Зі списку країн, що починаються на А виведіть:"
puts " - першу і останню країну. "
puts " - країни з 3 по 13. "
countryList = [
"Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola",
"Anguilla","Antarctica","Antigua and Barbuda","Argentina", "Armenia",
"Aruba","Australia","Austria","Azerbaijan"];3: Варимо магічне зілля:
- Скопіюйте список інгредієнтів у свою програму.
- Створіть пустий список potion.
- Додайте у нього 6 випадкових елементів зі списку інгредієнтів
- Перемішайте зілля (список potion) і виведіть його на екран
- Створіть case, щоб перевірити властивості свого зілля:
якщо зілля має інгредієнт “🐍” – виведіть на екран: “Зілля стане токсичним!”
якщо зілля має інгредієнт “🌿” – виведіть на екран: “Зілля матиме лікувальні властивості”
інакше: “Це просто магічний напій”

ingredients = [
"💧", # вода
"🐍", # шкіра змії
"🌿", # магічна трава
"🪶", # пташине перо
"🔥", # вогняна іскра
"🦴", # кісточка
"🍄", # гриб-мутант
"🕸", # павутина
"🧪", # алхімічна есенція
"🌑", # пісок темряви
"✨", # пилок чарівної феї
"🦂", # жало скорпіона
"🌋", # вулканічний попіл
"❄️", # кристал холоду
"🦉", # совине перо
"🧊", # осколок льоду
"🌕", # пилюка місяця
"🍃", # листя лісових духів
"🪨", # камінь сили
"🧿" # оберіг (сильний компонент)
]
Level Up!
Списки у Ruby
1: OpenAI щойно випустив нову версію чату ChatGPT. І написав про це пост. Але на його пост набігли боти й залишили купу поганих коментарів. Допоможіть компанії OpenAI почистити коментарі під постом від флуду.
сommnets=[ "It's awful","Great job!", "I like this!",
"horrible", "It's awful", "Excellent job!",
"Nice work!", "horrible", "horrible",
"This is insanely good.","Terrific job!",
"It's awful", "horrible", "horrible",
"Outstanding work!", "It's awful",
"It's awful", "It's awful", "Your work is incredible.",
"horrible", "horrible", "I really like this."]
2: Коли я запустила код зліва то отримала те, що зображено справа. Ваша задача: розібратися, як працюють ці конструкції й здогадатися, які числа я закрила сердечками. Запишіть код з правильними числами.
arr = [1, 2, 3, 4, 5, 6, 7 , 8]
arr.each {|a| print a+2, " "}
print "\n"
arr.each {|a| print a-💙, " "}
print "\n"
arr.each {|a| print a*💙, " "}
print "\n"
arr.each {|a| print a**💙, " "}
print "\n"
b=arr.select {|a| a > 💙 and a<💙}
print b
print "\n"
c=arr.reject {|a| a < 💙}
print c
3 4 5 6 7 8 9 10
-9 -8 -7 -6 -5 -4 -3 -2
3 6 9 12 15 18 21 24
1 4 9 16 25 36 49 64
[4, 5, 6]
[3, 4, 5, 6, 7, 8]
print “\n” – наступне буде писати з нового рядка.

Не зупиняйтесь у вивченні Ruby! До зустрічі на наступних уроках!
