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 z
mü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 12345678910
ve hangi 5
rakamları 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 678910
ve yapabileceğimiz en büyük şey budur. En küçük olanı yapmak biraz daha zordur, çünkü sayıları ortadan 123410
kaldırarak mümkün olan en küçük olanı bırakabiliriz .
Çünkü (20, 25, 11)
sonuç, 5
ve gibi oldukça sıkıcıdır 1
.
Son olarak, baştaki sıfırlar deneyin cevapları ekarte etmek, (9, 11, 3)
verir 91011
ki dönüş verimlerinde 91
ve 10
bü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, 3
olur.