遅延マイクロ波入力を生成する


18

関連:電子レンジプログラムし、遅延値生成します

私の同僚はとても怠け者なので、電子レンジをプログラミングするときに指を動かすことさえしません。(これは実際に本当です!)

彼が望んでいるものに最も近いが、すべての数字が同じである時間を与えるマイクロ波入力を見つけるのを手伝ってください。2つの入力が目的の時間と同じ時間差になる場合は、数字が少ない方を選択します。両方の桁数が同じ場合は、小さい方を選択してください。そうすれば、彼はそれほど長く待つ必要がなくなります。

入力は、完璧主義者が入力する整数です。たとえば430、4分30秒で10060それぞれ1分です。0より大きく、9999を超えません。

出力は整数である必要があります。たとえば444、4分44秒、5555秒です。

合計時間が1分40秒未満の場合、入力と出力の両方が単純な秒(分ではない)になります。

これはなので、コードはできるだけ短くする必要があります。

テストケース:

  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
私は半分怠lazなアプローチが好きです。「追加30秒」ボタンが表示されるまで押し続けてください:D
Geobits

@Geobits 11:30までの非常に多くのプレス。とにかく、事実は彼が上で書いた方法を使用しているということです...
-D

2
ええ、私は通常、数分かけて何かを入力するだけです。印刷機の数と指の移動距離の間の微妙なトレードオフです;)
Geobits

秒単位での入出力は許可されていますか?
CalculatorFeline

2
私の同僚はとても怠け者なので、電子レンジをプログラミングするときに指を動かすことさえしません。Dyalog APL本部で働いている人にこれ以上期待していなかった... :)
リン

回答:


3

ゼリー、26バイト

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

説明:

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.

オンラインでお試しください!


2

JavaScript(ES6)、112バイト

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}

c実際の経過秒数の5倍を計算するヘルパー関数を使用します。


1

Dyalog APL、37バイト

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

⍳41 2 3 4
⎕D"0123456789"
∘./⍨繰り返しテーブル(乗算テーブルに似ていますが、各セルにA×Bの代わりにAのB繰り返しが含まれる場合)
,テーブルを
⍎¨文字列のリストにします。結果
{... )引数がプロンプト入力を伴う先行引数で}表される関数… 2つのそれぞれに適用(引数とリスト)... base-100に変換base-60から変換2つの絶対値の差を計算値抽出リスト(結果がカプセル化されているため)
⎕⍵
(
0 100∘⊤
60⊥
-/
|
-/
ソート順(ソートせず、昇順を達成するために引数を配置する順序のみを返します。2つの要素が等しい場合、それらは現在の順序のままです。リストには長さが増加する要素があるため、これは関係を処理します。)
最初のもの、すなわち、入力との絶対差が最小のもの ⍵⊃⍨は、引数リスト(可能な結果のリスト)からその要素を取ります

1バイトを削ってくれた問題の同僚に感謝します。


注:OPを投稿した時点で解決策はありませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.