İndeksler ile Dizi Dilimleme
Coddy'nin Ruby Journey'sinin Temeller bölümünün bir parçası — ders 70 / 88.
Ruby, bir başlangıç dizini ve bir uzunluk kullanarak dizileri dilimlemenin başka bir yolunu sunar. Bir aralık belirtmek yerine iki sayı sağlarsınız: nereden başlanacağı ve kaç öğenin çıkarılacağı.
Söz dizimi, başlangıç dizinini sayıdan ayırmak için virgül kullanır:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1, 3]
puts slice # Çıktı: 20, 30, 40Bu, 1. indeksten başlayarak 3 öğeyi çıkarır. İlk sayı başlangıç konumudur ve ikincisi kaç öğe istediğinizdir.
Bu yaklaşım, tam olarak kaç öğeye ihtiyacınız olduğunu bildiğinizde özellikle yararlıdır:
letters = ["a", "b", "c", "d", "e"]
first_two = letters[0, 2]
puts first_two # Çıktı: a, bNegatif indeksler burada da çalışır. Dizinin sonundan başlayabilirsiniz:
colors = ["red", "green", "blue", "yellow"]
last_two = colors[-2, 2]
puts last_two # Çıktı: blue, yellowMevcut olandan daha fazla öğe isterseniz, Ruby hata vermeden sadece mevcut olanı döndürür:
nums = [1, 2, 3]
slice = nums[1, 10]
puts slice # Çıktı: 2, 3İhtiyaç duyulan öğe sayısını bildiğinizde bu yöntemi seçin ve tam konumları bildiğinizde aralıkları kullanın.
Görev
KolayÜç girdi okuyun:
- Virgülle ayrılmış tam sayılardan oluşan tek bir satır (örneğin,
5,10,15,20,25,30,35,40) - Bir başlangıç dizini (tam sayı)
- Çıkarılacak eleman sayısı (tam sayı)
İlk girdiyi bir tam sayı dizisine bölün. Başlangıç dizinini ve sayısını kullanarak diziyi index-and-length (dizin ve uzunluk) sözdizimiyle dilimleyin, ardından dilimlenen kısmın her bir elemanını kendi satırında yazdırın.
Örneğin, girdiler 5,10,15,20,25,30,35,40, 2 ve 4 ise çıktı şu şekilde olmalıdır:
15
20
25
30Eğer girdiler 100,200,300,400,500, 0 ve 2 ise çıktı şu şekilde olmalıdır:
100
200Eğer girdiler a,b,c,d,e,f,g, -3 ve 2 ise çıktı şu şekilde olmalıdır:
e
fEğer girdiler 10,20,30, 1 ve 10 ise çıktı şu şekilde olmalıdır:
20
30Kopya kağıdı
Ruby, bir başlangıç indeksi ve bir uzunluk kullanarak dizileri dilimlemeye (slicing) olanak tanır. Söz dizimi, başlangıç indeksini sayıdan ayırmak için virgül kullanır:
array[start_index, length]Temel örnek:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1, 3]
puts slice # Çıktı: 20, 30, 40İlk sayı başlangıç pozisyonudur ve ikincisi kaç öğenin çıkarılacağını belirtir.
Negatif indeksler bu söz dizimi ile çalışarak dizinin sonundan başlamanıza olanak tanır:
colors = ["red", "green", "blue", "yellow"]
last_two = colors[-2, 2]
puts last_two # Çıktı: blue, yellowMevcut olandan daha fazla öğe isterseniz, Ruby hata vermeden mevcut olanları döndürür:
nums = [1, 2, 3]
slice = nums[1, 10]
puts slice # Çıktı: 2, 3Kendin dene
# Girdileri oku
input_line = gets.chomp
start_index = gets.chomp.to_i
count = gets.chomp.to_i
# Girdiyi bir diziye böl
arr = input_line.split(',')
# TODO: Diziyi indeks-ve-uzunluk sözdizimini kullanarak dilimlemek
# ve her bir öğeyi kendi satırına yazdırmak için kodunuzu aşağıya yazınBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Operatörler Bölüm 2
Mantıksal Operatörler Bölüm 1Mantıksal Operatörler Bölüm 2Özet - Basit MantıkMantıksal Operatörler Bölüm 3Mantıksal Operatörler Bölüm 47Hesap Paylaşımı Hesaplayıcısı
Hoş Geldiniz MesajıKullanıcı Girdisi Alma13İleri Seviye Diziler
Aralıklar ile Dizi Dilimlemeİndeksler ile Dizi DilimlemeDizi OperatörleriInclude? Metodu2Değişkenler ve Veri Tipleri
Sayılar ve DeğişkenlerString Veri TipiBoolean Veri TipiSymbol Veri TipiVeri Tiplerini Kontrol Etmeİsimlendirme KurallarıÖzet - Değişken Oluşturma8Döngüler
Aralıklar ile For DöngüsüWhile DöngüsüBreakNextÖzet - FaktöriyelTimes DöngüsüUntil Döngüsüİç İçe DöngülerÖzet - Dinamik Girdi3Operatörler Bölüm 1
Aritmetik OperatörlerModulo OperatörüAritmetik KısayollarÖzet - Basit MatematikKarşılaştırma Operatörleri6Temel IO
puts ile Çıktı Almaprint ve p ile Çıktı AlmaDeğişkenlerle Çıktı Almagets ile Girdi AlmaChomp MetoduTip DönüşümüÖzet - Yaş HesaplayıcıÖzet - Doğru mu Yanlış mı9Metotlar
Metot TanımlamaMetot ParametreleriDönüş DeğerleriÖzet - Sigma MetoduÖzet - Doğrulama MetoduVarsayılan Parametre Değerleri12Koleksiyonlar Üzerinde Yineleme
Each Yineleyicisiİndeks ile EachStringler Üzerinde YinelemeMap ve Collect