Bu soru bu cevaptan ilham alıyor . Tesadüfen, çocukken Etiyopya Çarpma yöntemini kullanıyordum, ancak yakın zamana kadar yöntemin adını hiç bilmiyordum.
Etiyopya çarpımı, tamsayıları yalnızca toplama, ikiye katlama ve yarıya bölme ile çarpma yöntemidir.
Yöntem:
- İki sayıyı çarpın ve iki sütunun en üstüne yazın.
- Sol sütunda son sayıyı art arda yarıya indirir, kalanları atar ve 1 değerini yazana kadar sonucu aynı sütunda sonun altına yazar.
- Sağ sütunda son numarayı tekrar tekrar ikiye katlayın ve sonucu aşağıya yazın. sol sütunun 1 ile aynı satırda bir sonuç eklediğinizde durun.
- Üretilen tabloyu inceleyin ve sol sütundaki değerin eşit olduğu herhangi bir satırı atın. Orijinal iki sayının birlikte çarpılması sonucunu üretmek için kalan sağ sütundaki değerleri toplayın.
Örneğin: 17 x 34
17 34
İlk sütunu yarıya indirmek:
17 34
8
4
2
1
İkinci sütunu ikiye katlama:
17 34
8 68
4 136
2 272
1 544
İlk hücresi eşit olan dışa vurma satırları, bunu sağdaki sayıları köşeli parantez içine alarak yapacağız:
17 34
8 [68]
4 [136]
2 [272]
1 544
Sağ sütundaki kalan sayıları toplayın:
17 34
8 [68]
4 [136]
2 [272]
1 544
=====
578
Yani 17, Etiyopya yöntemiyle 34 ile çarpılarak 578'dir.
Görev:
1 ile 1000 arasında iki sayı alan ve aynı düzeni ve algoritmayı gerçekleştiren golf kodu.
Giriş Yöntemi: Bununla birlikte ...
Örnek Giriş:
19 427
Sonuç Çıktı:
19 427
9 854
4 [1708]
2 [3416]
1 6832
======
8113
Lütfen rakamların hizasına dikkat edin. Bu, düzende en önemlisidir. Ayrıca, eşit işaretlerle gösterilen çift satırın, genel yanıttan iki karakter daha uzun olması ve merkeze dayalı olması gerektiğini unutmayın.
Test yapmak
Bunu nasıl test edeceksiniz? İki sayı kullanarak programınızın bir çalışmasını sağlayarak. Bu numaralar kullanıcı kimlik numaranızdan çıkarılabilir (bu, imlecinizi üst penceredeki avatarınızın üzerine getirerek elde edilebilir). Numaranızı alın ve son üç basamağı alın, bu B sayısı, ön tarafta kalan her şeyi alın, bu A sayısı olacaktır. Sonra A kez B'yi test edin.
Test örneği:
Kullanıcı kimlik numaram 8555, bu yüzden sayılarım 8 ve 555. Yani çıktım şöyle görünmeli:
8 [555]
4 [1110]
2 [2220]
1 4440
======
4440
Kısıtlamalar:
Algoritmada belirtildiği gibi, "çiftleme" kullanımında hiçbir yerel çarpma operatörü tasarruf etmesine izin verilmemiştir. Başka bir deyişle, * gibi bir işleç kullanıyorsanız, yalnızca 2 ile çarpmak için kullanılabilir.
Buna uymayan girişler değerlendirmeye alınmayacak ve kullanıcı eşyalarıyla dolu bir karton kutu ile tesise refakat edilecektir. Her girişte kodun yanı sıra kullanıcı kimlik numaranıza göre test olacaktır.
Bu kod golf. En az sayıda bayt akranlarının ödülünü, ihtişamını ve hayranlığını alacak ... (Ve belki bir Lamborghini ... "Belki" dedim!)
*
veya gibix
) kullanımını kısıtlayabilirsiniz , ancak çarpmanın kullanılıp kullanılmadığını tespit etmek imkansızdır. Bu kısım dışında, meydan okuma ilginç.