Зламіть пароль банківського рахунку!


64

Вступ

Щоб запобігти крадіжці ключів від крадіжки користувача, у певній системі банківських рахунків було застосовано такий захід безпеки: щоразу вводяться лише певні цифри.

Наприклад, скажіть, що ваш цільовий пароль 89097, система може запропонувати їм ввести 2-ю, 4-ю та 5-ю цифри:

997

Або це може запропонувати їм ввести першу, третю та п'яту цифри:

807

Все, що вам відомо, це те, що ваша ціль вводила цифри по порядку, але ви не знаєте, до якої позиції вони належать у фактичному паролі . Все, що ви знаєте, - це два 9-х, які повинні прийти до 7; і це 8 приходить перед 0, а 0 перед 7. Отже, існує шість можливих паролів:

80997
89097
89907
98097
98907
99807

Кейлоггер на комп’ютері вашої цілі вже місяці збирає введення пароля, тож давайте зламати!

Виклик

Враховуючи перелік трицифрових входів, виведіть усі можливі паролі, які дійсні для всіх входів. Щоб зменшити складність обчислювальної техніки та зберегти низьку кількість можливих результатів, гарантія, що пароль має бути цифровим і матиме фіксований розмір 5. Цифри в кожному введеному порядку знаходяться в порядку: якщо це 123, ціль вводиться 1, то 2, то 3.

Приклади введення / виводу

|----------------------|--------------------------------------------|
|         Input        |                   Output                   |
|----------------------|--------------------------------------------|
| [320, 723, 730]      | [37230, 72320, 73203, 73230]               |
| [374, 842]           | [37842, 38742, 83742]                      |
| [010, 103, 301]      | [30103]                                    |
| [123, 124, 125, 235] | [12345, 12354, 12435]                      |
| [239, 944]           | [23944]                                    |
| [111, 120]           | [11201, 11120, 11210, 12011, 12110, 12101] |
| [456, 789]           | []                                         |
| [756, 586]           | [07586, 17586, 27586, 37586, 47586, 57586, 57856, 58756, 67586, 70586, 71586, 72586, 73586, 74586, 75086, 75186, 75286, 75386, 75486, 75586, 75686, 75786, 75806, 75816, 75826, 75836, 75846, 75856, 75860, 75861, 75862, 75863, 75864, 75865, 75866, 75867, 75868, 75869, 75876, 75886, 75896, 75986, 76586, 77586, 78586, 79586, 87586, 97586] |
| [123]                | [00123, 01023, 01123, 01203, 01213, 01223, 01230, 01231, 01232, 01233, 01234, 01235, 01236, 01237, 01238, 01239, 01243, 01253, 01263, 01273, 01283, 01293, 01323, 01423, 01523, 01623, 01723, 01823, 01923, 02123, 03123, 04123, 05123, 06123, 07123, 08123, 09123, 10023, 10123, 10203, 10213, 10223, 10230, 10231, 10232, 10233, 10234, 10235, 10236, 10237, 10238, 10239, 10243, 10253, 10263, 10273, 10283, 10293, 10323, 10423, 10523, 10623, 10723, 10823, 10923, 11023, 11123, 11203, 11213, 11223, 11230, 11231, 11232, 11233, 11234, 11235, 11236, 11237, 11238, 11239, 11243, 11253, 11263, 11273, 11283, 11293, 11323, 11423, 11523, 11623, 11723, 11823, 11923, 12003, 12013, 12023, 12030, 12031, 12032, 12033, 12034, 12035, 12036, 12037, 12038, 12039, 12043, 12053, 12063, 12073, 12083, 12093, 12103, 12113, 12123, 12130, 12131, 12132, 12133, 12134, 12135, 12136, 12137, 12138, 12139, 12143, 12153, 12163, 12173, 12183, 12193, 12203, 12213, 12223, 12230, 12231, 12232, 12233, 12234, 12235, 12236, 12237, 12238, 12239, 12243, 12253, 12263, 12273, 12283, 12293, 12300, 12301, 12302, 12303, 12304, 12305, 12306, 12307, 12308, 12309, 12310, 12311, 12312, 12313, 12314, 12315, 12316, 12317, 12318, 12319, 12320, 12321, 12322, 12323, 12324, 12325, 12326, 12327, 12328, 12329, 12330, 12331, 12332, 12333, 12334, 12335, 12336, 12337, 12338, 12339, 12340, 12341, 12342, 12343, 12344, 12345, 12346, 12347, 12348, 12349, 12350, 12351, 12352, 12353, 12354, 12355, 12356, 12357, 12358, 12359, 12360, 12361, 12362, 12363, 12364, 12365, 12366, 12367, 12368, 12369, 12370, 12371, 12372, 12373, 12374, 12375, 12376, 12377, 12378, 12379, 12380, 12381, 12382, 12383, 12384, 12385, 12386, 12387, 12388, 12389, 12390, 12391, 12392, 12393, 12394, 12395, 12396, 12397, 12398, 12399, 12403, 12413, 12423, 12430, 12431, 12432, 12433, 12434, 12435, 12436, 12437, 12438, 12439, 12443, 12453, 12463, 12473, 12483, 12493, 12503, 12513, 12523, 12530, 12531, 12532, 12533, 12534, 12535, 12536, 12537, 12538, 12539, 12543, 12553, 12563, 12573, 12583, 12593, 12603, 12613, 12623, 12630, 12631, 12632, 12633, 12634, 12635, 12636, 12637, 12638, 12639, 12643, 12653, 12663, 12673, 12683, 12693, 12703, 12713, 12723, 12730, 12731, 12732, 12733, 12734, 12735, 12736, 12737, 12738, 12739, 12743, 12753, 12763, 12773, 12783, 12793, 12803, 12813, 12823, 12830, 12831, 12832, 12833, 12834, 12835, 12836, 12837, 12838, 12839, 12843, 12853, 12863, 12873, 12883, 12893, 12903, 12913, 12923, 12930, 12931, 12932, 12933, 12934, 12935, 12936, 12937, 12938, 12939, 12943, 12953, 12963, 12973, 12983, 12993, 13023, 13123, 13203, 13213, 13223, 13230, 13231, 13232, 13233, 13234, 13235, 13236, 13237, 13238, 13239, 13243, 13253, 13263, 13273, 13283, 13293, 13323, 13423, 13523, 13623, 13723, 13823, 13923, 14023, 14123, 14203, 14213, 14223, 14230, 14231, 14232, 14233, 14234, 14235, 14236, 14237, 14238, 14239, 14243, 14253, 14263, 14273, 14283, 14293, 14323, 14423, 14523, 14623, 14723, 14823, 14923, 15023, 15123, 15203, 15213, 15223, 15230, 15231, 15232, 15233, 15234, 15235, 15236, 15237, 15238, 15239, 15243, 15253, 15263, 15273, 15283, 15293, 15323, 15423, 15523, 15623, 15723, 15823, 15923, 16023, 16123, 16203, 16213, 16223, 16230, 16231, 16232, 16233, 16234, 16235, 16236, 16237, 16238, 16239, 16243, 16253, 16263, 16273, 16283, 16293, 16323, 16423, 16523, 16623, 16723, 16823, 16923, 17023, 17123, 17203, 17213, 17223, 17230, 17231, 17232, 17233, 17234, 17235, 17236, 17237, 17238, 17239, 17243, 17253, 17263, 17273, 17283, 17293, 17323, 17423, 17523, 17623, 17723, 17823, 17923, 18023, 18123, 18203, 18213, 18223, 18230, 18231, 18232, 18233, 18234, 18235, 18236, 18237, 18238, 18239, 18243, 18253, 18263, 18273, 18283, 18293, 18323, 18423, 18523, 18623, 18723, 18823, 18923, 19023, 19123, 19203, 19213, 19223, 19230, 19231, 19232, 19233, 19234, 19235, 19236, 19237, 19238, 19239, 19243, 19253, 19263, 19273, 19283, 19293, 19323, 19423, 19523, 19623, 19723, 19823, 19923, 20123, 21023, 21123, 21203, 21213, 21223, 21230, 21231, 21232, 21233, 21234, 21235, 21236, 21237, 21238, 21239, 21243, 21253, 21263, 21273, 21283, 21293, 21323, 21423, 21523, 21623, 21723, 21823, 21923, 22123, 23123, 24123, 25123, 26123, 27123, 28123, 29123, 30123, 31023, 31123, 31203, 31213, 31223, 31230, 31231, 31232, 31233, 31234, 31235, 31236, 31237, 31238, 31239, 31243, 31253, 31263, 31273, 31283, 31293, 31323, 31423, 31523, 31623, 31723, 31823, 31923, 32123, 33123, 34123, 35123, 36123, 37123, 38123, 39123, 40123, 41023, 41123, 41203, 41213, 41223, 41230, 41231, 41232, 41233, 41234, 41235, 41236, 41237, 41238, 41239, 41243, 41253, 41263, 41273, 41283, 41293, 41323, 41423, 41523, 41623, 41723, 41823, 41923, 42123, 43123, 44123, 45123, 46123, 47123, 48123, 49123, 50123, 51023, 51123, 51203, 51213, 51223, 51230, 51231, 51232, 51233, 51234, 51235, 51236, 51237, 51238, 51239, 51243, 51253, 51263, 51273, 51283, 51293, 51323, 51423, 51523, 51623, 51723, 51823, 51923, 52123, 53123, 54123, 55123, 56123, 57123, 58123, 59123, 60123, 61023, 61123, 61203, 61213, 61223, 61230, 61231, 61232, 61233, 61234, 61235, 61236, 61237, 61238, 61239, 61243, 61253, 61263, 61273, 61283, 61293, 61323, 61423, 61523, 61623, 61723, 61823, 61923, 62123, 63123, 64123, 65123, 66123, 67123, 68123, 69123, 70123, 71023, 71123, 71203, 71213, 71223, 71230, 71231, 71232, 71233, 71234, 71235, 71236, 71237, 71238, 71239, 71243, 71253, 71263, 71273, 71283, 71293, 71323, 71423, 71523, 71623, 71723, 71823, 71923, 72123, 73123, 74123, 75123, 76123, 77123, 78123, 79123, 80123, 81023, 81123, 81203, 81213, 81223, 81230, 81231, 81232, 81233, 81234, 81235, 81236, 81237, 81238, 81239, 81243, 81253, 81263, 81273, 81283, 81293, 81323, 81423, 81523, 81623, 81723, 81823, 81923, 82123, 83123, 84123, 85123, 86123, 87123, 88123, 89123, 90123, 91023, 91123, 91203, 91213, 91223, 91230, 91231, 91232, 91233, 91234, 91235, 91236, 91237, 91238, 91239, 91243, 91253, 91263, 91273, 91283, 91293, 91323, 91423, 91523, 91623, 91723, 91823, 91923, 92123, 93123, 94123, 95123, 96123, 97123, 98123, 99123] |
|----------------------|--------------------------------------------|

Правила

  • Введення гарантується не порожнім.
  • Провідна і остання нулі має значення: 01234відрізняється від пароля 12340і 1234не зламає жодного пароля. Подумайте, як працюють справжні паролі!
  • Застосовуються стандартні правила вводу / виводу .
  • Немає стандартних лазівки .
  • Це , тому найкоротша відповідь у байтах виграє. Мови без кодового гольфу вітаються!

5
Чи цифри завжди в порядку? Виходячи з тестових випадків, я припускаю, що вони є, але я не міг бачити, як це було зазначено в правилах, якщо я не прочитав їх.
Кевін Кройсейсен

13
Ласкаво просимо до PPCG! Це приємний, добре структурований і чітко відформатований перший виклик. Ви чітко зробили домашнє завдання, що стосується того, щоб знизити все це. Я з нетерпінням чекаю відповіді на нього (якщо хтось не відповість на нього першим на R!). Надалі ми радимо скористатися пісочницею, щоб отримати зворотний зв'язок перед публікацією на основну. Сподіваюся, вам сподобається час на PPCG!
Джузеппе

1
@Giuseppe дякую! Я анонімно читав питання на цьому сайті протягом багатьох років, і я писав і налаштовував і фактично вирішував цю конкретну проблему протягом декількох місяців: мені це сподобалось досить, щоб пропустити пісочницю. Я опублікую там перший наступний раз!
cefel

2
@Arnauld Добре, якщо ваш пароль - 01234 або 12340, ви не зможете увійти, ввівши 1234. Паролі - це більше рядки, ніж число, навіть якщо вони складаються з чисел, принаймні в цьому сенсі. Тож так, провідні та кінцеві нулі обов'язкові.
cefel

2
Здається, що в остаточному тестовому випадку відсутній 22123 ... якщо я щось не розумію?
Йона

Відповіді:


24

Пітон, 100 байт

lambda e,d='%05d':[d%i for i in range(10**5)if all(re.search('.*'.join(x),d%i)for x in e)]
import re

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

Працює як в Python 2, так і в Python 3.

( 97 байт у Python 3.8 :)

lambda e:[p for i in range(10**5)if all(re.search('.*'.join(x),p:='%05d'%i)for x in e)]
import re

1
Це прекрасне рішення ...
Йона

1
Ваш код, не 3.8, може виконувати "вираження присвоєння бідолахи" згладжування рядка '%05d'.
xnor


12

JavaScript (ES6), 88 байт

Друкує результати за допомогою alert().

a=>{for(k=n=1e5;n--;)a.every(x=>(s=([k]+n).slice(-5)).match([...x].join`.*`))&&alert(s)}

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

Прокоментував

a => {                    // a[] = input array of 3-character strings
  for(k = n = 1e5; n--;)  // initialize k to 100000; for n = 99999 to 0:
    a.every(x =>          // for each string x = 'XYZ' in a[]:
      ( s =               //   define s as the concatenation of
          ([k] + n)       //   '100000' and n; e.g. '100000' + 1337 -> '1000001337'
          .slice(-5)      //   keep the last 5 digits; e.g. '01337'
      ).match(            //   test whether this string is matching
        [...x].join`.*`   //   the pattern /X.*Y.*Z/
      )                   //
    ) &&                  // end of every(); if all tests were successful:
      alert(s)            //   output s
}                         //

8

Haskell, 81 80 78 76 байт

f x=[p|p<-mapM(:['1'..'9'])"00000",all(`elem`(concat.words<$>mapM(:" ")p))x]

Очевидний підхід Hastell в грубій силі: склав список усіх можливих паролів і зберігає ті, де всі елементи зі вхідного списку знаходяться у відповідному списку подальностей.

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

Редагувати: -1 байт завдяки @xnor, -2 -4 байти завдяки @ H.PWiz



1
concat.words<$>mapM(:" ")pкоротше
H.PWiz

3
використовувати p<-mapM(:['1'..'9'])"00000"для збереження ще 2 байти
H.PWiz


5

Pyth, 11 байт

f<QyT^s`MT5

Приймає введення як набір рядків.
Спробуйте тут

Пояснення

f<QyT^s`MT5
      s`MT      Take the digits as a string.
     ^    5     Take the Cartesian product with itself 5 times.
f   T           Filter the ones...
 <Qy            ... where the input is a subset of the power set.

5

Рубін , 54 байти

->a{(?0*5..?9*5).select{|x|a.all?{|y|x=~/#{y*'.*'}/}}}

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

Вводить дані як масив символьних масивів.


Молодці! Ти побив мене на 25 байт. Чи слід видалити свою відповідь?
Ерік Думініл

1
Ні, якщо у вас є дійсна відповідь, не потрібно видаляти її.
Кирило Л.

5

Python 3 , 98 байт

f=lambda l,s='':any(l)or print(s)if s[4:]else[f([x[x[:1]==c:]for x in l],s+c)for c in'0123456789']

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

Рекурсивно намагається створити кожен п'ятицифровий рядок чисел у s, відстежуючи послідовності, що lзалишилися для потрапляння. Якщо до кінця всі порожні, друкується результат.

Python 3.8 (передвипуск) , 94 байти

lambda l:[s for n in range(10**5)if all(''in[x:=x[x[:1]==c:]for c in(s:='%05d'%n)]for x in l)]

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

Отримайте силу виразів призначення !. Звідси використовується метод для перевірки підпорядкованості .



4

Сітківка , 53 байти

~(`
.$*
m`^
G`
^
K`¶5+%`$$¶0"1"2"3"4"5"6"7"8"9¶
"
$$"

Спробуйте в Інтернеті! Пояснення:

~(`

Після виконання сценарію візьміть результат як новий сценарій і виконайте і його.

.$*

Вставити .*скрізь. Це призводить до того, що .*3.*2.*0.*нам це потрібно лише 3.*2.*0не те, що це має значення.

m`^
G`

Вставте а G`на початку кожного рядка. Це перетворює це на команду Retina Grep.

^
K`¶5+%`$$¶0"1"2"3"4"5"6"7"8"9¶
"
$$"

Приставте ще дві команди Retina. Отже, скрипт буде виглядати приблизно так:

K`

Очистіть буфер (який містить оригінальний ввід).

5+

Повторіть 5 разів ...

%`$

... додати до кожного рядка ...

0$"1$"2$"3$"4$"5$"6$"7$"8$"9

... цифра 0, потім копія рядка, потім цифра 1тощо доти 9. Це означає, що після nциклів у вас будуть всі n-дигірні номери.

G`.*3.*2.*0.*
G`.*7.*2.*3.*
G`.*7.*3.*0.*

Відфільтруйте можливі числа на основі введених даних.


4

R , 80 82 байт

Reduce(intersect,lapply(gsub("",".*",scan(,"")),grep,sprintf("%05d",0:99999),v=T))

Ось базовий R-розчин за допомогою регексу. Написання цієї вкладеної серії функцій змусило мене зрозуміти, наскільки я навчився цінувати пакет magrittr!

Спочатку не читав правила введення, тому тепер читає з stdin (спасибі @KirillL).

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


@digEmВсі сказано, що це 82 байти чи не так? Не можна використовувати цілі числа через потенціал для провідних нулів на вході.
Нік Кеннеді

Вибачте, я прочитав заголовок і підсвідомо вибрав мінімальну кількість, не помічаючи, що це було прокреслено ... і так, вибачте, знову ви праві щодо введення рядка;)
digEmAll

2

Рубі , 79 77 байт

->x{(0...1e5).map{|i|'%05d'%i}.select{|i|x.all?{|c|i=~/#{c.gsub('','.*')}/}}}

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

Введення - це масив рядків.

Ось більш читана версія того ж коду:

def f(codes)
  (0...10**5).map{|i| '%05d'%i}.select do |i|
    codes.all? do |code|
      i =~ Regexp.new(code.chars.join('.*'))
    end
  end
end

До речі, ваш підхід також можна скоротити, перейшовши на вхід масиву char, як у моїй версії, та ще 2 байти, відформатувавши верхнє значення так 1e5, як це
Кирилл Л.

@KirillL. Дякуємо за -2 байти. Я не зміню формат введення, тому що моя відповідь буде дуже схожа на вашу. Ура!
Ерік Думініл

2

PHP 128 байт

for(;$i++<1e5;$k>$argc||print$s)for($k=0;$n=$argv[++$k];)preg_match("/$n[0].*$n[1].*$n[2]/",$s=sprintf("%05d
",$i-1))||$k=$argc;

або

for(;$i<1e5;$i+=$k<$argc||print$s)for($k=0;$n=$argv[++$k];)if(!preg_match("/$n[0].*$n[1].*$n[2]/",$s=sprintf("%05d
",$i)))break;

приймати дані з аргументів командного рядка. Запустіть -nrабо спробуйте їх в Інтернеті .



2

Japt, 21 байт

1e5o ù'0 f@e_XèZË+".*

Спробуй це!

1e5o ù'0 f@e_XèZË+".*    # full program

1e5o                     # generate numbers under 100k
     ù'0                 # left pad with 0's
         f@              # filter array
           e_            # check every element of input array
             Xè          # X is the number to be tested.
                         # test it against a regex.
               ZË+".*    # the regex is an element from the input array
                         # with wildcards injected between each character

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


менш марні змінні:: 1e5o ù'0 fA{Ue@AèX®+".*P
лише для ASCII,

також 23:1e5o ù'0 fA{Ue@AèX¬q".*
ASCII


Цікаво ... Я не розумів, return X,Y,Zщо обрав би останній термін. Дякую за поради :)
дата

1
@dana; Так, це особливість JavaScript: tio.run/##y0osSyxOLsosKNHNy09J/Z9m@1@jQqdS09auuii1pLQoTwHIq/…
Shaggy

2

C # (Visual C # Interactive Compiler) , 116 байт

x=>{for(int i=0;i<1e5;){var s=$"{i++:D5}";if(x.All(t=>t.Aggregate(-6,(a,c)=>s.IndexOf(c,a<0?a+6:a+1))>0))Print(s);}}

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

// x: input list of strings
x=>{
  // generate all numbers under 100k
  for(int i=0;i<1e5;){
    // convert the current number to
    // a 5 digit string padded with 0's
    var s=$"{i++:D5}";
    // test all inputs against the 5 digit
    // string using an aggregate.
    // each step of the aggregate gets
    // the index of the next occurrence
    // of the current character starting
    // at the previously found character.
    // a negative index indicates error.
    if(x.All(t=>t
             .Aggregate(-6,(a,c)=>
               s.IndexOf(c,a<0?a+6:a+1)
             )>0))
      // output to STDOUT
      Print(s);
  }
}

EDIT: виправлено помилку, коли один і той же символ рахувався не один раз. Наприклад, якщо він 000був зареєстрований, функція використовується для повернення всіх паролів, що містять єдиний 0.



1

K 67 байт

{n@&{&/y in\:x@/:&:'a@&3=+/'a:(5#2)\:'!32}[;x]'n:{"0"^-5$$x}'!_1e5}

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

{...} визначає лямбда. Приклад використання:{...}("320";"723";"730")

повертає ("37230";"72320";"73203";"73230")

  • n - це список цілих чисел у діапазоні 0..9999 як рядки з 0 padded

    • _1e5 застосовується підлогу до плаваючого 1e5 (наукове позначення) -> генерує ціле число 100000

    • !_1e5 генерує цілий список 0..99999

    • {..}'!_1e5 застосовується лямбда до кожного значення в 0..99999

    • $x перетворити аргумент x (неявний аргумент) у рядок

    • -5$$xправоруч відрегулюйте рядок $ x у полі розміру 5 (наприклад, -5$$12генерує)" 12"

    • "0"^stringзамінює пробіли знаком "0", тому "0"^-5$$12генерує"00012"

  • a - це список цілих чисел у діапазоні 0..31 як 5-бітні значення

    • !32 генерувати значення 0..31

    • (5#2) повторити 2 п’ять разів (список 2 2 2 2 2)

    • (5#2)\:'!32 генерує 5-бітні значення (2-базові п’ятикратні) для кожного значення в діапазоні 0..31

  • ми фільтруємо значення a точно з 3. Це значення все комбінації (місця) , де малюнок може бути розташовані по адресою: 11100 11010 11001 10110 10101 10011 01110 01101 01011 00111. Вих. для шаблону "abc" ми маємо еквівалентність з регулярними виразамиabc?? ab?c? ab??c a?bc? a?b?c a??bc ?abc? ?ab?c ?a?bc ??abc?

    • +\'a обчислює суму кожного двійкового представлення (кількість одиниць)

    • 3=+\'a генерує список булевих (якщо кожне значення в a має саме 3)

    • a@&3=+\'a читається як "а, де 3 = + \ 'a істинно"

  • генерувати список індексів для попередніх місць: (0 1 2; 0 1 3; 0 1 4; 0 2 3; 0 2 4; 0 3 4; 1 2 3; 1 2 4; 1 3 4; 2 3 4)та можливі введені значення для пароля (x)

    • &:' читає як "де кожен", застосовується до списку бінарних цілих чисел і обчислює індекси кожного 1-бітного

    • x@/: застосовує пароль x до кожного елема списку індексів (генерує всі можливі введені значення)

  • Визначає, чи всі шаблони знаходяться у списку всіх можливих введених значень

    • y - аргумент, який представляє перелік шаблонів

    • y in\: читається як кожне значення y у списку праворуч

    • &/є "і понад". &/y in\:..повертає true, якщо всі шаблони у y знаходяться у списку ..

  • нарешті, повертайте кожен рядок у n при кожному індексі, що робить лямбда правдою

    • n@&{..} читається як "n там, де лямбда {..} повертає істину"

0

C (GCC) 222 байти

#define C(p)*f-p?:++f;
#define I(x,y)x<10?:++y,x%=10;
a,b,c,d,e;f(int**H){for(;a<10;){int**h=H,*f,g=0;for(h=H;*h;){f=*h;C(a)C(b)C(c)C(d)C(e)f>*h+++2?:(g=1);}g?:printf("%d%d%d%d%d,",a,b,c,d,e);++e;I(e,d)I(d,c)I(c,b)I(b,a)}}

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

Код виклику

int main() {
  int hint1[5] = {9,9,7,-1,-1};
  int hint2[5] = {8,0,7,-1,-1};
  int* hints[3] = {hint1,hint2,0};
  f(hints);
}

Вихід

80997,89097,89907,98097,98907,99807,

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