Kurangi daftar ke nomor akhir

9

Input

Daftar (array) angka, atau string numerik jika itu membuatnya lebih mudah. Anda dapat mengasumsikan akan selalu ada setidaknya dua elemen dalam daftar dan setiap elemen akan menjadi bilangan alami (bilangan bulat lebih besar dari nol).

Keluaran

Satu angka, atau sekali lagi, string numerik.

Masalah

Idenya adalah untuk mengurangi daftar angka dengan menghapus digit terakhir dari angka terbesar pada tahap daftar saat ini, akhirnya berakhir dengan satu nomor (hanya satu nomor yang harus dikembalikan, bahkan jika ada beberapa contoh)

Contoh

[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

Celah

Celah standar berlaku

Kendala lain

Program Anda harus bekerja untuk daftar nomor acak apa pun (tentu saja dengan alasan)

Uji Kasus

[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

Mencetak gol

Ini , jadi jawaban tersingkat di setiap bahasa menang!

Henry
sumber
1
Tolong beri tahu saya jika saya melewatkan sesuatu. Pertanyaan pertama.
Henry
14
Tidak tahu apakah sudah terlambat untuk berubah, tetapi pertanyaannya mungkin lebih baik jika kita memang harus menampilkan setiap tahap. Saya pikir jawabannya akan sangat mudah jika tidak.
DLosc
8
Karena tidak ada orang lain yang menyebutkannya, ini adalah jenis benda yang sering ditangkap di kotak pasir .
James
1
Bisakah Anda menambahkan testcases di mana jawabannya bukan digit pertama dari entri pertama dalam daftar?
JAD
5
Cara saya membaca pertanyaan ini jawaban untuk [12, 123, 124]yaitu 12, yang membuat setiap satu posted jawaban yang salah .
Ørjan Johansen

Jawaban:

4

Python 2 , 24 byte

-4 byte terima kasih kepada notjagan.

lambda l:min(zip(*l)[0])

Cobalah online!

benar-benar manusiawi
sumber
2
Ini dapat dipersingkat 4 byte sambil tetap menggunakan ide yang sama min(zip(*l)[0]).
notjagan
3

Mathematica, 29 byte

Min[First@*IntegerDigits/@#]&
J42161217
sumber
3

Japt , 8 6 5 byte

-1 byte terima kasih kepada @Shaggy

n g g

Mengambil input sebagai larik string numerik. Cobalah online!

Penjelasan

        // implicit input: array of strings
n       // sort the array
  g     // get the first element
    g   // get the first character
        // implicit output
Justin Mariner
sumber
5 byte : Urutkan array, dapatkan elemen pertama, dapatkan karakter pertama.
Shaggy
@ Shaggy Oh ya, aku benar-benar terlalu rumit ini. Terima kasih!
Justin Mariner
Tidak masalah :) n v gjuga akan bekerja selama 5 byte. Selamat datang di Japt, omong-omong.
Shaggy
2

05AB1E , 3 byte

€нW

Cobalah online!

Emigna
sumber
Gagal untuk [12,23,12].
Olivier Grégoire
@ OlivierGrégoire: Bagaimana? Menghapus digit dalam urutan 3,2,2,2,1menghasilkan 1 seperti yang diharapkan.
Emigna
Buruk saya, saya salah membaca. Lihat komentar sebelumnya .
Olivier Grégoire
2

PHP , 45 byte

<?foreach($_GET as$v)$r[]=$v[0];echo min($r);

Cobalah online!

Jörg Hülsermann
sumber
Gagal untuk [12,23,12].
Olivier Grégoire
@ OlivierGrégoire [12,23,12] -> [12,2,12] -> [1,2,12] -> [1,2,1] -> [1,1] -> [1] -> 1 menurut saya benar
Jörg Hülsermann
Buruk saya, saya salah membaca. Lihat komentar sebelumnya .
Olivier Grégoire
2

V , 11 , 5 byte

ÚxV}p

Cobalah online!

Saya membuat waaay ini lebih rumit dari yang sebenarnya. Jawaban ini hanya mengurutkan setiap baris dengan nilai ASCII, dan kemudian mengembalikan karakter pertama. Karena ini adalah jawaban yang baik atau membosankan, berikut ini adalah jawaban yang lebih menarik yang benar-benar mengimplementasikan algoritma yang dijelaskan sebelumnya:

V , 11 byte

òún
/äîä
Lx

Cobalah online!

James
sumber
Saya juga ketika saya mengajukan pertanyaan. Jawaban asli Anda adalah yang paling saya harapkan. Kekecewaan.
Henry
2

Jelly ,  3  2 byte

ṂḢ

Program lengkap yang mengambil daftar daftar karakter (string) dan mencetak hasilnya.

Cobalah online!

Bagaimana?

Kami hanya perlu mengembalikan digit terkemuka terkecil ...

ṂḢ - Main link: list of lists of characters
Ṃ  - minimum (lexicographical ordering ensures this will start with the minimal digit)
 Ḣ - head (get that first digit character)
Jonathan Allan
sumber
Tidak masalah, itu terjadi.
Jonathan Allan
2

JavaScript (ES6), 17 byte

Mengambil input sebagai array string.

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

Cobalah

Masukkan daftar angka yang dipisahkan koma.

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>

Shaggy
sumber
1

,,,, 3 byte

⫰1⊣

Penjelasan

⫰1⊣

⫰    pop the whole stack and push the minimum element
 1   push 1
  ⊣  pop the minimum and 1 and push the first character of it
benar-benar manusiawi
sumber
1

Braingolf , 17 byte

VVR{Mvd<M&$_R}vvx

Cobalah online!

Penjelasan

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

Dengan kata lain, itu membangun tumpukan yang hanya terdiri dari digit pertama dari setiap item, kemudian menghasilkan yang terendah.

Tantangan ini memberi saya banyak ide berguna untuk ditambahkan pada Braingolf, dan sekarang berkat penambahan loop foreach "khusus", Braingolf dapat melakukannya dalam 5 byte:

Braingolf , 5 byte [tidak bersaing]

(d<)x

Penjelasan

(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

Cobalah online!

Saya biasanya menentang menambahkan builtin hanya untuk menyelesaikan satu tantangan, tetapi saya dapat melihat sejumlah besar kegunaan untuk (...)loop foreach baru , jadi saya tidak benar-benar menganggapnya menambahkan fitur hanya untuk tantangan ini.

Skidsdev
sumber
Gagal untuk [12,23,12]. Output yang diharapkan adalah 2, Anda kembali 1.
Olivier Grégoire
@ OlivierGrégoire Output yang diharapkan dari itu adalah 1:[12,23,12] > [12,2,12] > [1,2,1] > [1,1]
Skidsdev
Buruk saya, saya salah membaca. Lihat komentar sebelumnya .
Olivier Grégoire
0

Pip , 5 byte

Mengambil daftar nomor input sebagai argumen baris perintah.

@@SSg

Cobalah online!

Bergantian:

MN@Zg

Cobalah online!

Penjelasan

Di kedua program, gadalah daftar argumen baris perintah.

@@SSg

SSmengurutkan menggunakan perbandingan string, sehingga menempatkan angka dengan digit pertama terkecil terlebih dahulu, terlepas dari besarnya mereka. Unary @memberikan elemen pertama dari daftar atau skalar. Kami menerapkannya dua kali untuk mendapatkan digit pertama dari angka pertama setelah pengurutan.

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

Bergantian:

MN@Zg

Zadalah zip; versi unary dapat digunakan untuk mengubah daftar. Elemen pertama dari daftar yang dialihkan adalah daftar digit pertama dari semua angka. @mendapatkan daftar digit itu; MNmembutuhkan minimum.

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

PHP, 27 byte

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

(Wow, benar-benar salah paham pertanyaannya. Ini tidak berhasil. Akan diedit nanti.)

Liren
sumber
0

Pyth , 9 7 byte

hSmsh`d

Cobalah online!

Penjelasan

Ini pada dasarnya mengembalikan digit terdepan terkecil.

       Q    # Implicit input
  msh`d     # For each number in Q, convert to string, take the first character, convert to integer
hS          # Return the minimum
Jim
sumber
0

Python 3 , 33 byte

lambda l:min(str(x)[0]for x in l)

Cobalah online!

@DJMcMayhem dan @totallyhuman memiliki solusi yang lebih baik tetapi saya menganggap input numerik bukan string.

Simon
sumber
0

Pyth, 3 byte

hhS

Input adalah daftar representasi string angka.

Cobalah secara Online

Penjelasan:

hhS
    # Q=input
  S # Sort Q
 h  # First Element of sorted list
h   # First element of string
    # Implicitly print result
jacoblaw
sumber