Tembel mikrodalga girişi oluşturun


18

İlgili: Mikrodalga fırınımı programla ve Tembel değerler üret .

Meslektaşım o kadar tembel ki mikrodalga fırını programlarken parmağını bile hareket ettirmiyor. (Bu aslında doğrudur!)

Ona istediğine en yakın zamanı veren, ancak tüm rakamların aynı olduğu mikrodalga girişini bulmasına yardım edin. İki giriş istenen zaman ile aynı zaman farkına neden olursa, daha az basamaklı olanı seçin. Her ikisinin de aynı sayıda basamağı varsa, daha azını seçin - bu yüzden uzun süre beklemesi gerekmez.

Girdi, bir mükemmeliyetçinin gireceği tamsayıdır, örneğin 4304 dakika 30 saniyedir 100ve 60her biri 1 dakikadır. 0'dan büyük ve 9999'u geçmeyecektir.

Çıktı bir tamsayı olmalıdır, örneğin 4444 dakika 44 saniye ve 5555 saniyedir.

Toplam süre 1 dakika ve 40 saniyenin altındaysa, hem giriş hem de çıkış yalnızca basit saniyelerde (dakika yok) olabilir.

Bu , bu nedenle kodunuz mümkün olduğunca kısa olmalıdır.

Test senaryoları:

  30 →   33
  60 →   55
  70 →  111
  90 →   88
 100 →   55
 101 →   66
 120 →   77
 130 →   88
 200 →   99
 201 →  222
 500 →  444
 700 →  666
1000 →  888
1055 →  999
1056 → 1111
1090 → 1111

3
Yarı tembel yaklaşımı seviyorum . "30 sn ekle" düğmesini oraya gelene kadar
ezmeye

@Geobits 11: 30'a kadar çok sayıda baskı makinesi. Her neyse, gerçekte o yukarıda yazdığım yöntemi kullanıyor ... :-D
Adám

2
Evet, genellikle birkaç dakika içinde herhangi bir şey için yazıyorum. Pres sayısı ve parmakla seyahat mesafesi arasındaki hassas bir
denge

Saniyede # giriş / çıkışa izin veriliyor mu?
CalculatorFeline

2
Meslektaşım o kadar tembel ki mikrodalga fırını programlarken parmağını bile hareket ettirmiyor. Dyalog APL merkezinde çalışan birinden daha az beklemiyordum ... :)
Lynn

Yanıtlar:


3

Jöle, 26 bayt

bȷ2ḅ60
³ÇạÇ,
9Rẋ€4R¤ḌFÇ€ṂṪ

Açıklama:

bȷ2ḅ60             f(x) = x tobase 100 frombase 60
³ÇạÇ,              g(x) = (abs(f(arg) - f(x)), x)
9Rẋ€4R¤            main(arg) = [1..9] repeat each with [1..4],
       ḌF           then get digits and flatten,
         ǀ         then map g,
           Ṃ        then minimum,
            Ṫ       then last element.

Çevrimiçi deneyin!


2

JavaScript (ES6), 112 bayt

n=>{c=n=>n*3+n%100*2;d=n=c(n);for(r=i=0;i<1e4;i++)/^(.)\1*$/.test(i)&(m=c(i)-n,m<0?m=-m:m)<d&&(d=m,r=i);return r}

cGeçen saniye sayısının beş katını hesaplayan bir yardımcı işlevi kullanır .


1

Dyalog APL , 37 bayt

{⍵⊃⍨⊃⍋⊃|-/(60⊥0 100∘⊤)¨⎕⍵}⍎¨,⎕D∘./⍨⍳4

⍳41 2 3 4
⎕D"0123456789"
∘./⍨tekrarlama tablosu (çarpım tablosu gibi, ancak her hücrenin A × B yerine A'nın B tekrarlarını içerdiği durumlarda)
,tabloları dizeler listesine
⍎¨dönüştür (her bir dizeyi sayıya dönüştürür) results.)
{… argümanın istenen girdi ile önceki bağımsız değişken ile }temsil edildiği işlev … her ikisine de uygulanır (bağımsız değişken ve liste) ... base-100'e dönüştürün base-60'dan dönüştürün iki mutlak arasındaki farkı hesaplayın değer ayıklama listesi (çünkü sonucu kapsüllendi)
⎕⍵
(
0 100∘⊤
60⊥
-/
|
-/
sıralama düzeni (Sıralama yapmaz, yalnızca artan düzen elde etmek için bağımsız değişkenlerin yerleştirileceği sırayı döndürür. İki öğe eşitse, geçerli sırada kalırlar. Listemiz artan uzunluktaki öğelere sahip olduğundan, bu bağlarla ilgilenir.)
birincisi, yani girdiden en küçük mutlak farkı olan ⍵⊃⍨ o elemanı argüman listesinden alır (olası sonuçların listesi)

Söz konusu meslektaşım için bir bayt tıraş ettiği için teşekkürler.


Not: OP'yi yayınlarken herhangi bir çözümüm yoktu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.