Puzzling'deki bu yayından ilham aldı . Bu bulmaca için spoiler aşağıda.
Girdi olarak üç pozitif tamsayı verildiğinde (x, y, z), kapsayıcı aralığı yapılandırın, [x, y]bu aralığı birleştirin, ardından zmümkün olan en büyük ve en küçük pozitif tamsayıları üretmek için ardışık olmayan basamakları kaldırın . Baştaki sıfırlara izin verilmez (yani sayılarla başlamalıdır [1-9]). Bu iki sayıyı her iki sırayla çıktılayın.
Şaşırtıcı görevinden Örneğin, giriş için (1, 100, 100), mümkün olan en büyük sayı 99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100,
en küçük sayıdır 10000012340616263646566676869707172737475767778798081828384858687888990919293949596979899100,
gelen mantık altında aşağıdaki jafe en yayınlanmıştır cevap var:
- Sayının uzunluğunu (sabit sayıda basamak vardır) etkileyemeyiz, bu nedenle değeri en üst düzeye çıkarmak için maksimum ilk basamağı, ardından ikinci basamağı vb. Alırız.
- İlk dokuz dokuz olmayanı (kaldırmak için 16 hane kaldı) kaldırın:
999995051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - Sonraki 17 basamaktaki en büyük sayı 7'dir, bu nedenle buradan cevaptaki bir sonraki basamak en fazla 7 olabilir (16 basamaktan fazlasını kaldıramayız). Yani 15 olmayan 7'yi kaldırın ... (kaldırmak için 1 haneli kaldı):
999997585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - Buradan sonraki basamak en fazla 8 olabilir, bu nedenle 8'den olmayan birini ortadan kaldırın:
99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - Benzer mantık, ancak tersine çevrilir (yani, en küçük sayı için
1öncülük etmek yerine öncülük etmek istiyoruz9).
İşte küçük bir örnek: (1, 10, 5).
Aralığı oluşturur 12345678910ve hangi 5rakamları kaldırabileceğimize karar veririz. Açıkçası, çıktının uzunluğunu etkileyemediğimiz için, ön basamağı en üst düzeye çıkarmak istiyoruz. Yani, çıkarırsak 12345, kalırız 678910ve yapabileceğimiz en büyük şey budur. En küçük olanı yapmak biraz daha zordur, çünkü sayıları ortadan 123410kaldırarak mümkün olan en küçük olanı bırakabiliriz .
Çünkü (20, 25, 11)sonuç, 5ve gibi oldukça sıkıcıdır 1.
Son olarak, baştaki sıfırlar deneyin cevapları ekarte etmek, (9, 11, 3)verir 91011ki dönüş verimlerinde 91ve 10büyük ve en küçük olarak.
G / Ç ve Kurallar
- Daha kolay / daha kısa ise, biri büyük ve diğeri en küçük olmak üzere iki programı / işlevi kodlayabilirsiniz; bu durumda puanınız her iki bölümün toplamıdır.
- Giriş ve çıkış herhangi bir uygun yöntemle verilebilir .
- Girdinin, dilinizin yerel sayı türüne uygun olduğu varsayılabilir, ancak ne birleştirilmiş sayı ne de çıktının bunu yapacağı varsayılmaz.
- Tam bir program veya bir işlev kabul edilebilir. Bir işlev varsa, çıktıyı yazdırmak yerine döndürebilirsiniz.
- Standart boşluklar yasaktır.
- Bu kod golfüdür, bu nedenle her zamanki golf kuralları geçerlidir ve en kısa kod (bayt cinsinden) kazanır.
9, 11, 3olur.