Зменшіть список до остаточного числа


9

Вхідні дані

Список (масив) чисел або числових рядків, якщо це полегшує. Можна припустити, що у списку завжди буде щонайменше два елементи, і кожен елемент буде натуральним числом (ціле число більше нуля).

Виходи

Єдине число або знову ж таки числовий рядок.

Проблема

Ідея полягає в тому, щоб скоротити список номерів, видаливши останню цифру найбільшого числа на тому поточному етапі списку, врешті-решт закінчившись одним числом (лише одне число повинно бути повернуто, навіть якщо є кілька примірників)

Приклад

[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

8
Оскільки ніхто інший не згадував про це, це та річ, яку часто ловлять у пісочниці .
Джеймс

1
Чи можете ви додати тести, у яких відповідь не є першою цифрою першого запису у списку?
JAD

5
Те, як я прочитав це питання, відповідь [12, 123, 124]- 12це робить кожну опубліковану відповідь неправильною .
Ørjan Johansen

Відповіді:






3

Japt , 8 6 5 байт

-1 байт завдяки @Shaggy

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 байт : сортуйте масив, отримайте перший елемент, отримайте перший символ.
Shaggy

@Shaggy О, так, я повністю перевершив складність цього. Дякую!
Джастін Марінер

Без проблем :) n v gтакож працював би на 5 байт. Ласкаво просимо до Japt.
Shaggy


2

PHP , 45 байт

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

Спробуйте в Інтернеті!


Невдачі для [12,23,12].
Олів'є Грегоар

@ OlivierGrégoire [12,23,12] -> [12,2,12] -> [1,2,12] -> [1,2,1] -> [1,1] -> [1] -> 1 на мій погляд правильний
Йорг Гюльсерманн

Моє погано, я неправильно прочитав. Дивіться попередній коментар .
Олів'є Грегоар

2

V , 11 , 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, Braingolf може це зробити в 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

Спробуйте в Інтернеті!

Я звичайно проти додавання вбудованих файлів просто для того, щоб виконати один виклик, але я бачу безліч застосувань для нового (...)циклу foreach, тому я дійсно не вважаю його додаванням функції саме для цього завдання.


Невдачі для [12,23,12]. Очікуваний вихід 2, ти повернувся 1.
Олів'є Грегоар

@ OlivierGrégoire Очікуваний результат цього 1:[12,23,12] > [12,2,12] > [1,2,1] > [1,1]
Skidsdev

Моє погано, я неправильно прочитав. Дивіться попередній коментар .
Олів'є Грегоар


0

Піп , 5 байт

Приймає список вхідних чисел як аргументи командного рядка.

@@SSg

Спробуйте в Інтернеті!

По черзі:

MN@Zg

Спробуйте в Інтернеті!

Пояснення

В обох програмах gє список аргументів командного рядка.

@@SSg

SSсортування, використовуючи порівняння рядків, таким чином, ставлячи на перше число найменші перші цифри, незалежно від їх величини. Унар @дає перший елемент списку або скаляр. Ми застосовуємо його двічі, щоб отримати першу цифру першого числа після сортування.

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

По черзі:

MN@Zg

Zє блискавкою; його одинарна версія може бути використана для переміщення списку. Перший елемент перенесеного списку - це список перших цифр усіх чисел. @отримує цей список цифр; 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 , 9 7 байт

hSmsh`d

Спробуйте в Інтернеті!

Пояснення

Це в основному повертає найменшу провідну цифру.

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.