リストを最後の数に減らします


9

入力

数値のリスト(配列)、またはそれが簡単になる場合は数値文字列。リストには常に少なくとも2つの要素があり、すべての要素は自然数(ゼロより大きい整数)であると想定できます。

アウトプット

単一の数値、または数値ストリング。

問題

アイデアは、リストのその現在の段階で最大数の最後の桁を削除することによって数のリストを減らし、最終的に1つの数で終わることです(複数のインスタンスがある場合でも、1つの数のみが返されます)

[123,343,121,76,465,786] -- The last digit in 786 is dropped, so it becomes 78
[123,343,121,76,465,78]  -- New largest number is 465, so the 5 is dropped, making it 46
[123,343,121,76,46,78]   -- Repeat until left with one number
[123,34,121,76,46,78]
[12,34,121,76,46,78]
[12,34,12,76,46,78]
[12,34,12,76,46,7]
[12,34,12,7,46,7]
[12,34,12,7,4,7]
[12,3,12,7,4,7]
[1,3,1,7,4,7]            -- If there are multiple max numbers, you **must** remove the last digit from all of them
[1,3,1,4]
[1,3,1]
[1,1]                    -- You have your answer when there is one number, or multiple numbers that are equal
1                        -- Result

抜け穴

標準の抜け穴が適用されます

その他の制約

プログラム、乱数の任意のリストに対して機能する必要があります(当然の理由で)

テストケース

[24,72,4]
[24,7,4]
[2,7,4]
[2,4]
[2]
2

[14, 7]
[1, 7]
[1]
1

[1278,232,98273,2334]
[1278,232,9827,2334]
[1278,232,982,2334]
[1278,232,982,233]
[127,232,982,233]
[127,232,98,233]
[127,232,98,23]
[127,23,98,23]
[12,23,98,23]
[12,23,9,23]
[12,2,9,2]
[1,2,9,2]
[1,2,2]
[1]
1

得点

これはので、すべての言語で最も短い答えが勝ちます!


1
何か見逃した場合はお知らせください。最初の質問。
ヘンリー

14
知らん手遅れ変化にだが、我々があれば質問は良いかもしれない場合はなかった出力に、各ステージを持っています。それ以外の場合、答えは非常に簡単だと思います。
DLosc 2017

8
他の誰もそれを言及していないので、これはサンドボックスで頻繁にキャッチされる種類のことです。
ジェームズ

1
回答がリストの最初のエントリの最初の桁ではないテストケースを追加できますか?
JAD 2017

5
私がこの質問の答えを読む方法[12, 123, 124]12投稿されたすべての回答が間違っていることです。
Ørjanヨハンセン

回答:






3

Japt8 6 5バイト

@Shaggyのおかげで-1バイト

n g g

入力を数値文字列の配列として受け取ります。オンラインでお試しください!

説明

        // implicit input: array of strings
n       // sort the array
  g     // get the first element
    g   // get the first character
        // implicit output

5バイト:配列をソートし、最初の要素を取得し、最初の文字を取得します。
シャギー2017

@シャギーああ、私はこれを完全に複雑にしています。ありがとう!
ジャスティンマリナー

問題ありません:) n v g5バイトでも動作します。ところで、Japtへようこそ。
シャギー2017



2

V11、5つのバイト

ÚxV}p

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

私はこの作っていたwaaayは、それが実際よりももっと複雑。この答えは、すべての行をASCII値で並べ替え、最初の文字を返します。これは親切または退屈な回答であるため、ここでは、最初に説明したアルゴリズムを実際に実装するより興味深い回答を示します。

V、11バイト

òún
/äîä
Lx

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


質問をしたときも私でした。あなたの元の答えは、私が最もよく見えると思っていたものでした。残念。
ヘンリー

2

ゼリー 3  2 バイト

ṂḢ

文字(文字列)のリストのリストを取得して結果を出力する完全なプログラム。

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

どうやって?

最小の先頭桁を返すだけです...

ṂḢ - Main link: list of lists of characters
Ṃ  - minimum (lexicographical ordering ensures this will start with the minimal digit)
 Ḣ - head (get that first digit character)

問題ありません。
ジョナサンアラン

2

JavaScript(ES6)、17バイト

文字列の配列として入力を受け取ります。

a=>a.sort()[0][0]

それを試してみてください

数値のコンマ区切りリストを入力します。

o.innerText=(f=
a=>a.sort()[0][0]
)((i.value="1278,232,98273,2334").split`,`);oninput=_=>o.innerText=f(i.value.split`,`)
<input id=i><pre id=o>



1

Braingolf、17バイト

VVR{Mvd<M&$_R}vvx

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

説明

VVR{Mvd<M&$_R}vvx  Implicit input from commandline args
VVR                Create stack2 and stack3, return to stack1
   {.........}     Foreach item in stack..
    M              ..Move item to next stack
     v             ..Switch to next stack
      d            ..Split item into digits
       <M          ..Move first item to next stack
         &$_       ..Clear stack
            R      ..Return to stack1
              vv   Switch to stack3
                x  Reduce to lowest value
                   Implicit output of last item on stack

つまり、各項目の最初の桁のみで構成されるスタックを作成し、最下位を出力します。

この課題により、ビルトインがBraingolfに追加できる便利なアイデアがたくさんありました。「特別な」foreachループが追加されたおかげで、Brainolfは5バイトでそれを行うことができます。

Braingolf、5バイト[非競合]

(d<)x

説明

(d<)x  Implicit input from commandline args
(..)   Special foreach loop, iterates over the stack, moving each item to a special
       Sandboxed stack environment, and prepends the last item of the sandboxed
       stack to the real stack at the end of each iteration
 d<    Split into digits, move first digit to end of stack
    x  Reduce to lowest value
       Implicit output of last item on stack

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

私は通常、1つの課題を完了するためだけにビルトインを追加することには反対ですが、新しい(...)foreachループの使用法が多すぎることがわかるので、この課題のためだけに機能を追加することはあまり考えていません。


失敗し[12,23,12]ます。期待される出力は2、あなたが返しました1
OlivierGrégoire2017

そのOlivierGrégoireザ・予想される出力@です1[12,23,12] > [12,2,12] > [1,2,1] > [1,1]
Skidsdev

私の悪い、私は誤って読みました。以前のコメントを参照してください
OlivierGrégoire2017


0

ピップ、5バイト

入力番号のリストをコマンドライン引数として受け取ります。

@@SSg

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

代わりに:

MN@Zg

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

解説

どちらのプログラムでgも、はコマンドライン引数のリストです。

@@SSg

SS文字列比較を使用して並べ替えるので、大きさに関係なく、最初の桁が最も小さい数値を最初に配置します。単項@は、リストまたはスカラーの最初の要素を与えます。これを2回適用して、ソート後に最初の数値の最初の桁を取得します。

    g  [24 72 491]
  SS   [24 491 72]
 @     24
@      2

代わりに:

MN@Zg

Zzipです。その単項バージョンはリストの転置に使用できます。転置リストの最初の要素は、すべての数値の最初の桁のリストです。@その数字のリストを取得します。MNその最小を取る。

    g  [24 72 491]
   Z   [[2 7 4] [4 2 9]]
  @    [2 7 4]
MN     2

0

PHP、27バイト

<?=substr(max($_GET),0,-1);

(うわー、完全に誤解された質問です。これは機能しません。後で編集します。)




0

Pyth、3バイト

hhS

入力は、数値の文字列表現のリストです。

オンラインで試す

説明:

hhS
    # Q=input
  S # Sort Q
 h  # First Element of sorted list
h   # First element of string
    # Implicitly print result
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.