Створіть стеблосто-листовий сюжет


14

Пов'язане: Обґрунтуйте ділянку стебла та листя

Вхідні дані

Непорожній список натуральних чисел. Якщо потрібно, їх можна взяти за рядки. Ви не можете припустити, що це відсортовано.

Вихідні дані

Стовбурових і листя ділянку чисел. У вигляді цього стовбурової і листя ділянки, числа упорядковуються в стеблах десятками, то все числа , які вписуються в цей стебло у них значення , що надається в стебло, а потім всі вони сортуються. У цьому виклику нові рядки розділяють стебла, а пробіли відокремлюють стебла від листя.

Ви можете або включати, або виключати всі порожні стебла, які знаходяться між порожніми стеблами.

Випробування

(списки можна взяти за списком вашої мови за замовчуванням; я використовував JSON для нижче)

У тому числі порожні стебла:

[1, 2, 3, 3, 3, 3, 3, 10, 15, 15, 18, 1, 100]

0 11233333
1 0558
2
3
4
5
6
7
8
9
10 0

[55, 59, 49, 43, 58, 59, 54, 44, 49, 51, 44, 40, 50, 59, 59, 59]

4 034499
5 0145899999

[10000, 10100]

1000 0
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010 0

Виключаючи порожні стебла:

[1, 2, 3, 3, 3, 3, 3, 10, 15, 15, 18, 1, 100]

0 11233333
1 0558
10 0

[55, 59, 49, 43, 58, 59, 54, 44, 49, 51, 44, 40, 50, 59, 59, 59]

4 034499
5 0145899999

[10000, 10100]

1000 0
1010 0


Це потрібно сортувати та / або зберігати порядок введення?
Род

@Rod за визначенням сортує вхід по десятках, потім по одиницях. Порядок введення не має значення.
Стівен

2
Формат виводу ОБОВ'ЯЗКОВО бути таким? Чи правдива моя відповідь ?
Род

1
@totallyhuman кортежі в порядку, але так, листя потрібно сортувати, ось і вся суть сюжету, щоб візуалізувати візерунки та розповсюдження
Стівен

Відповіді:


2

R , 12 байт

stem(scan())

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

Пояснення:

s               # imports RAND's "Million Random Digits"
  e  )          # cooks a pound of spaghetti and places it on the stack
 t              # transposes the output 42 times
       can      # goes for a pee
   m(           # grows moustache, turns head to side and frowns
      s   (     # implicitly ignores all criticism
           )    # makes a stemplot of the input

Я думаю, що цього stemбуло б достатньо, оскільки він використовує масив як вхідний.
Джузеппе

Це був єдиний спосіб, коли я міг отримати приклад, щоб насправді працювати над TIO. І я здогадуюсь, що я звик до стилю відповідей "програма чи функція", і я не впевнений у інших форматах.
ngm


Погодьтеся з @Giuseppe, відповідь має бути просто stem:)
JayCe



3

Сітківка , 38 30 байт

Дякуємо Нілу за збереження 2 байтів та Леву за збереження ще 6.

Кількість байтів передбачає кодування ISO 8859-1.

O#`
.\b
 $&
\B 
0 
D$`¶?.+ 
$*

Введення - це список цілих чисел, відокремлений рядковими колами. Вихідні дані не містять порожніх префіксів.

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


(?<=(\b.+ ).)¶\1економить два байти.
Ніл

Байти можна зберегти, скориставшись етапом дедупликації замість заміщення як останнього етапу (тоді ви повинні мати справу з першим рядком) tio.run/##K0otycxL/…
Лев

@Leo Спасибі, я йду з невеликим варіантом, який не закінчується провідним підводним каналом.
Мартін Ендер

2

JavaScript (ES6), 89 байт

a=>a.sort((a,b)=>a-b).map(e=>r[d=e/10|0]=(r[d]||d+` `)+e%10,r=[])&&r.filter(e=>e).join`
`

2

Python 2 , 146 140 133 124 120 118 109 107 90 86 84 91 82 81 70 63 байт

-6 байт завдяки Роду. -9 байт завдяки ов.

lambda l:{i/10:[j%10for j in sorted(l)if j/10==i/10]for i in l}

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

Гаразд, щось трохи підступне. Як повинні знати всі програмісти Python, дикти не впорядковані, тобто початковий порядок пар ключ-значення не зберігається. Однак у своєму нинішньому коді я взагалі не сортую отриманий дикт. Проте я перевіряв кілька разів, перевіряючи рівність і порядок кожен раз, і диктант завжди виходить правильно. Якщо хтось або спростує, що це завжди правильно, або знає, чому це працює, я хотів би знати.

Введіть як список пітонів, а виведіть як диктант. Приклад:

Вхід:

[1, 2, 3, 3, 3, 3, 3, 10, 15, 15, 18, 1, 100]

Вихід:

{0: [1, 1, 2, 3, 3, 3, 3, 3], 1: [0, 5, 5, 8], 10: [0]}


1
r[i/10]=r.get(i/10,'')+`i%10`для 82 байт
ов

Я думаю, що дикти відсортовані за замовчуванням? тільки не в первісному порядку
Руйнуючий лимон

1

Математика, 103 байти

Код, узятий із видаленої відповіді @ user202729

Grid[Table[{Keys[#][[i]],""<>ToString/@#[[i]]},{i,Length@#}]]&@(GroupBy[Sort@#,⌊#/10⌋&]~Mod~10&@#)&

1

> <> , 84 байти

1&0\n~a7+3.
 :}<$?)@:$@:v!?
r~&^?-l&:+1&/&:,a-%a::
&=?v~&1+:&ao>n" "o:?!;::a%:@-a,&:

Спробуйте в Інтернеті або на рибному майданчику !

Припускає, що вхідні номери вже є у стеку .

Пояснення: Спочатку ми сортуємо стек за допомогою сортування міхура з цим бітом коду:

1&0\
 :}<$?)@:$@:v!?
   ^?-l&:+1&/

Далі ми обчислюємо цілочисельний коефіцієнт першої речі в стеку за допомогою 10 ::a%-a,, вводимо його в регістр і проходимо через стек, друкуючи останні цифри чисел, поки їхні перші цифри не будуть такими, як регістр, потім збільшуючи реєстр і продовжуючи. Коли ми досягнемо кінця списку, позначеного символом a 0, зупиняємось.


1

PostgreSQL, 53 байти

SELECT n/10,json_agg(n%10ORDER BY n)FROM t GROUP BY 1

Список цілих чисел повинен містити в integer стовпці nіснуючої таблиці t. Результат - таблиця з двома стовпцями: кожен рядок складається зі стовпця "стебло" та стовпця "листя". Стовпчик "листя" знаходиться у форматі масиву JSON. (Як зазначається в коментарях, не потрібно точно дотримуватися формату, показаного у "Тестових випадках".)

Хоча порядок стебел не гарантований (щоб зберегти 10 байт, ORDER BY 1 пропущено з кінця запиту), у моєму тестуванні стебла, здавалося, закінчилися у правильному порядку.

Переглянути результат у SQL Fiddle

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