1
1 1
1 4 2
1 4 9 3
1 4 9 16 4
.
.
.
Şeklinde ilerleyen bu örüntüyü, kullanıcının belirlediği son değere kadar yazdıran bir bilgisayar programına ihtiyacım var. Örüntünün gidişi, sayıların karesinin yan yana gelmesi ile oluşuyor ve yanlarına sayıların adedi yazılıyor. Bunun kodunu R ve Python ile gösterebilir misiniz?
n <- 5
for (i in 1:n) {
line <- paste(rep(i, i), collapse = " ")
line <- paste(rep(i^2, i), line)
cat(line, "\n")
}
Python:
n = 5 // value
for i in range(1, n+1):
line = " ".join([str(i**2) for j in range(i)])
line = " ".join([str(i) for j in range(i)]) + " " + line
print(line)
Yukarıdaki R, aşağıdaki Python. Böyle mi istiyorsunuz?
@Uton benim anladığım şu: Kodu çalıştıran kişi bir sınır değeri belirleyecek, misal 7. Kod da her satıra 1'den başlayıp sınır değerine kadar giden sayıların karelerini çıkartacak, satırın sonuna da o satırda kaç sayı kullanıldığını yazacak. Karesi yazılan sayı miktarı her satırda bir artacak, ta ki elde sayı kalmayana kadar. 1'den başlaması için biraz düzenledim:
Python:
value = int(input("Provide a value: "))
for i in range(1, value + 1):
nums = [j*j for j in range(1, i+1)]
output = " ".join(str(i) for i in nums) + " " + str(i)
print(output)
Her satır, satır numarası kadar sayı içeriyor. Sayılar, birinci sayı olan 1'den başlayarak ve her sayının önceki sayının karesi olarak belirlenerek, kare olarak yazılıyor değil mi? Yani, her satırın ilk sayısı 1'dir, sonraki sayılar ise sırasıyla kendilerinin karesi olmuş oluyor.
Python:
n = int(input("SDeğer: "))
for i in range(1, n+1):
nums = [j*j for j in range(1, i+1)]
output = " ".join(str(j) for j in nums) + " " + str(i)
print(output)
O zaman yazdığın kod veya benim şu örnek kod işini görebilir.
Benim ilk anladığım örüntü mantığı şu şekilde idi:
Her satırda i sayısının kaç kez yazıldığı ile i^2 sayılarının kullanılmasından oluşuyor. Her satır bir önceki satırdan bir tane daha i^2 sayısının eklenmesi ile oluşuyor.
Konu sahibi hocam gelip açıklığa kavuşturursa daha doğru olur, eğer yanlış bir çözümse çözüm işaretimin de kaldırılması daha doğru olacaktır.
@Uton benim anladığım şu: Kodu çalıştıran kişi bir sınır değeri belirleyecek, misal 7. Kod da her satıra 1'den başlayıp sınır değerine kadar giden sayıların karelerini çıkartacak, satırın sonuna da o satırda kaç sayı kullanıldığını yazacak. Karesi yazılan sayı miktarı her satırda bir artacak, ta ki elde sayı kalmayana kadar. 1'den başlaması için biraz düzenledim:
Python:
value = int(input("Provide a value: "))
for i in range(1, value + 1):
nums = [j*j for j in range(1, i+1)]
output = " ".join(str(i) for i in nums) + " " + str(i)
print(output)
Gelen dönütlerden sonra düzgününü çıkartmak için bayağı bir deneme yaptım da hiçbirini düzgün olarak R'a çeviremedim sanırım. Python bilgim çok iyi olmadığından R kullanıyorum. Rica edersem R dilini çevirirseniz daha rahat sonucu bulabiliriz.
Gelen dönütlerden sonra düzgününü çıkartmak için bayağı bir deneme yaptım da hiçbirini düzgün olarak R'a çeviremedim sanırım. Python bilgim çok iyi olmadığından R kullanıyorum. Rica edersem R dilini çevirirseniz daha rahat sonucu bulabiliriz.
Benim için sorun yok hocam. Ben de R bilmediğim için çeviremiyorum.
@ibrahimY'nin önerisi en temizi ama. Ben kodu yazarken başka şeylerle de uğraşıyordum, niyeyse kareleri önce bir listeye atmanın daha mantıklı olduğunu düşünmüştüm.