1'den N'ye kadar olan sayıların bütün dizilimlerini yazdırma

nilelle

Kilopat
Katılım
28 Temmuz 2016
Mesajlar
188
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Selam arkadaşlar bir program yazmak istiyorum. Programa bir n sayısı gireceğiz. Program 1'den N'ye kadar olan sayıların bütün dizilimlerini yazdıracak ekrana.
Örneğin;
N = 3 olsun.
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
Şeklinde yazdıracak. Nasıl bir algoritma kurmam lazım, fikir verirseniz çok sevinirim.
 
Son düzenleyen: Moderatör:
İç içe for döngüsü kullanarak yazdırabilirsin. Her for içinde bir yer tutucu olabilir, mesela 1 için tüm kombinasyonlar, 2 için tüm kombinasyonlar vb.
 
Hangi programlama dilinde yazacağını bilmiyorum fakat gireceğin sayı aralığı belli ise her basamağını ayrı al while ilk sayı?< n içine (eğer birden fazla basamak varsa) tekrar while döngüsü aç.
 
[CODE title="Haskell çözümü"]-- haskell
perms [] = [[]]
perms xs = [ x:ps | x <- xs , ps <- perms ( xs\\[x] ) ][/CODE]

[CODE lang="javascript" title="Haskell çözümün Javascript Implementasyonu."]const permutaion = (xs) => !xs.length ? [[]] : xs.flatMap(x => permutaion(xs.filter(v => v !== x)).map(vs => [x, ...vs]));[/CODE]

JavaScript:
console.table(permutaion([1, 2, 3]));
/*
┌─────────┬───┬───┬───┐
│ (index) │ 0 │ 1 │ 2 │
├─────────┼───┼───┼───┤
│    0    │ 1 │ 2 │ 3 │
│    1    │ 1 │ 3 │ 2 │
│    2    │ 2 │ 1 │ 3 │
│    3    │ 2 │ 3 │ 1 │
│    4    │ 3 │ 1 │ 2 │
│    5    │ 3 │ 2 │ 1 │
└─────────┴───┴───┴───┘
*/

JavaScript:
// 1..N arasındaki sayılar `range` kullarak hesaplatılabilir.

const range = n => [...Array(n)].map((v, i) => i + 1);

console.table(permutaion(range(3)));
 
[CODE lang="java" title="Java"]int girilen_sayi; //ister ekle, ister kullanıcıdan al
for(int sayi=1; sayi <= girilen_sayi; sayi++){
for(int sayi_yaz = 1; sayi_yaz <= sayi; sayi++){
System.out.print(sayi_yaz);

}
}[/CODE]
 
Son düzenleme:
Python:
import itertools
n = input("Girilen Sayı >>> ")
for i in itertools.product(n,repeat=len(n)):
    print(i)
veya

Python:
n = input("Girilen Sayı >>> ")
for i in n:
    for j in n:
        print(j,i)
 

Yeni konular

Geri
Yukarı