Öklid algoritması, iki pozitif tam sayının en büyük ortak bölenini (GCD) hesaplamak için yaygın olarak bilinen bir algoritmadır.
Algoritma
Bu zorluğun amacı için, algoritma aşağıdaki gibi açıklanmaktadır:
Belirli bir karakter bitişik çizgileri, iki giriş görüntü
bir girişi, örneğin3,4
komşu hatlar ile temsil edilebilir000
ve0000
İlk çevirin
length(short_line)
başka karakterin içine uzun satırındaki işareti, demek-
benzediğini şimdi000
ve---0
length(short_line)
Uzun satırdaki ilk karakterleri kaldırın .
şimdi000
,0
İkiye kadar tekrarlayın Adım 2 ve 3, her yineleme sonrası daha kısa ve daha uzun hatları kullanarak, aynı uzunluğa sahip, örneğin
000
,0
-00
,0
00
,0
-0
,0
0
,0
- Burada durmayı veya yinelemeye devam etmeyi ve satırlardan birini boş bir satıra dönüştürmeyi seçebilirsiniz.
Bu adımların her biri 0.3 ile 1.5 saniye arasında bir aralık ile ayrılmalıdır.
Meydan okuma
Girdi olarak iki doğal sayı verilen, yukarıdaki algoritmanın çıktısıyla tam olarak aynı görünen bir çıktı oluşturan bir program yazın. Boşluk olmayan diğer yazdırılabilir ASCII karakterlerini 0
ve dışında -
kullanabilirsiniz, ancak tutarlı olun ve yalnızca iki karakter kullanın. Çıktı, zamanlama da dahil olmak üzere, yukarıdaki algoritma tarafından üretilecekle tamamen aynı olduğu sürece alternatif algoritmalar da kullanabilirsiniz.
Örnekler
Bu, 24,35
GCD'leri 1 olan kopyalar olan girdi içeren bir örnektir .
Bu, 16,42
GCD 2'ye sahip girişli bir örnektir .
kurallar
- Bu bir kod golf , çok kısa bayt kazanır
- Standart boşluklar geçerlidir
- Girdinin pozitif ondalık tamsayı olduğunu varsayabilirsiniz.
Açıklamalar
- Sayıları temsil eden satırların orijinal sıralarında kalmaları gerekir, yani ilk görüntülenen "kare" nin ilk ve ikinci satırlarının sonraki tüm karelerde sırasıyla birinci ve ikinci satır olması gerekir.
- Algoritma sona erdikten sonra, görünür hiçbir ek varlık görünmemelidir. Bununla birlikte, son "kare" nin, boşluk bırakmadan önce diğer tüm karelerle en az aynı süre boyunca görüntülendiğinden emin olursanız, satırları boşaltmanın da uygun olduğu anlamına gelir.
:-)