Çözüldü Python'da Örüntü Oluşturan Kod Nasıl Yazılır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Blacksidemre

Kilopat
Süper Moderatör
Katılım
8 Eylül 2018
Mesajlar
6.326
Makaleler
2
Çözümler
42
Yer
İstanbul
Merhaba.

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?
 
Çözüm
Kod:
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?
Merhaba.

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?

Yan yana gelip sayı oluşturmasıyla mı değerlerin toplanıp oluşturulmasıyla mı?
 
Son düzenleyen: Moderatör:
Kod:
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?
 
Çözüm
Yan yana gelip sayı oluşturmasıyla mı, değerlerin toplanıp oluşturulmasıyla mı?

Hayır, sayıların kareleri yanlarına geliyor sadece, ve yanda kaç tane sayı varsa onun adedini belirtecek bir sayı geliyor.

@Uton evet tam istediğim gibi yazmışsınız çok teşekkürler. Bu arada cat ve line terimlerinin anlamı nedir, ne için onları orada kullandınız acaba? R için soruyorum da.
 
Hayır, sayıların kareleri yanlarına geliyor sadece, ve yanda kaç tane sayı varsa onun adedini belirtecek bir sayı geliyor.

@Uton evet tam istediğim gibi yazmışsınız çok teşekkürler. Bu arada cat ve line terimlerinin anlamı nedir, ne için onları orada kullandınız acaba? R için soruyorum da.
R'da fonksiyon bunlar. Cat ekrana veri yazdırmak için, line da string fonksiyonu değişkendeki değeri ekrana yazdırıp bir boşluk bırakıyor.
 
Son düzenleyen: Moderatör:
Çözümü denediniz mi? Bana istediğiniz çıktıyı veriyor gibi gelmedi.

Verdiğiniz örüntüyü ya ben anlayamadım ya da örüntü düzensiz. Önce sayının karesi, sonra satırdaki sayı sayısı olsun diyorsunuz ama ilk satır bu düzeni baştan patlatıyor. 0'ın karesi 0, bir tane sayı bulunduğu için de yanında 1 yazması lazım. Hadi 1'den başlasın istiyorsunuz, bu sefer ilk satırın 1 1 olması gerekiyor. İlk sayının karesi + satırdaki sayı sayısı örüntüsü ancak böyle sağlanıyor.

0 da dahil olacak şekilde şöyle yazdım ben, 0'ı istemezseniz düzenleyebilirsiniz:
Python:
value = int(input("Provide a value: "))

for i in range(1, value + 1):
    nums = [j*j for j in range(i)]
    output = " ".join(str(i) for i in nums) + " " + str(i)
    print(output)
 
Çözümü denediniz mi? Bana istediğiniz çıktıyı veriyor gibi gelmedi.

Verdiğiniz örüntüyü ya ben anlayamadım ya da örüntü düzensiz. Önce sayının karesi, sonra satırdaki sayı sayısı olsun diyorsunuz ama ilk satır bu düzeni baştan patlatıyor. 0'ın karesi 0, bir tane sayı bulunduğu için de yanında 1 yazması lazım. Hadi 1'den başlasın istiyorsunuz, bu sefer ilk satırın 1 1 olması gerekiyor. İlk sayının karesi + satırdaki sayı sayısı örüntüsü ancak böyle sağlanıyor.

0 da dahil olacak şekilde şöyle yazdım ben, 0'ı istemezseniz düzenleyebilirsiniz:
Python:
value = int(input("Provide a value: "))

for i in range(1, value + 1):
    nums = [j*j for j in range(i)]
    output = " ".join(str(i) for i in nums) + " " + str(i)
    print(output)
"n" değerini kullanıcı sanırım değiştirir diye default 5 girmişim sanırım böyle bir hata var kodumda. Bu şekilde sanırım daha düzgün, direkt "n" değerini kullanıcıya baştan girmesini istiyor, "n" değerini atıyorum 7 olarak girersek şu şekilde bir örüntü oluyor, en azından ben böyle anladım;

Kod:
1 1
2 2 4
3 3 9 9
4 4 16 16 25
5 5 25 25 36 36
6 6 36 36 49 49 49
7 7 49 49 64 64 64 49

Python:
n = int(input("değeri girin: "))

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)

Örüntünün sıfırdan başlamasını istiyorsa range değerinin başlangıç değerini 0 yapması yeterli,
Python:
for i in range(0, n)
fakat bundan sonra örüntü istenilen şekilde mi oluyor yoksa olmuyor pek anlamadım açıkçası.
 
@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)

7 için bu çıktıyı veriyor:

Kod:
Provide a value: 7
1 1
1 4 2
1 4 9 3
1 4 9 16 4
1 4 9 16 25 5
1 4 9 16 25 36 6
1 4 9 16 25 36 49 7
 

Yeni konular

Geri
Yukarı