Вхід:
Список цілих чисел (які ніколи не містять нуля)
Вихід:
Список однакового розміру з підрахунками на основі наступного:
- Якщо поточний елемент негативний: Перегляньте всі предмети перед цим елементом і підрахуйте, скільки разів цифр сталося в цих інших числах
- Якщо поточний елемент натомість позитивний: Перегляньте всі елементи після цього елемента та порахуйте, скільки разів цифра сталася в цих інших числах
Є один поворот: Якщо розмір списку є рівним, ми підраховуємо кожне число лише один раз (навіть якщо воно відповідає декільком цифрам), і якщо розмір непарний, ми підраховуємо кожну цифру чисел для кожної цифри поточного елемента (дублюється цифри підраховуються кілька разів).
Наведемо кілька прикладів, щоб це трохи уточнити:
Приклад з парним списком:
Input: [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2, 4, 1, 2, 1, 1, 5 ]
Розмір списку рівний , тому кожне число ми підраховуємо лише один раз.
4: Це позитивно, тому ми з нетерпінням чекаємо вперед. Є три номери , що містять цифру4(42,-942,8374). Отже, ми почнемо з а3.10: Це позитивно, тому ми з нетерпінням чекаємо вперед. Є два числа, що містять або цифру,1і / або0(-10,-200). Отже другий вихід2.42: Знову позитив, тому вперед. Є чотири номери , де зазначено цифру4і / або2(-942,8374,728,-200). Отже, третій вихід4.-10: Цього разу це негативно, тому ми дивимось назад. Є лише одне число, що містить цифру1та / або0(ми ігноруємо знак мінус) (10). Отже, четвертий вихід1.- тощо.
Приклад із непарним списком:
Input: [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13, 2, 2, 4, 8, 3, 0, 11, 6 ]
Розмір списку непарний , тому ми рахуємо кожну цифру.
382: Це позитивно, тому ми з нетерпінням чекаємо вперед. Є одне3в інших числах (381), шість8- в інших числах (-82, -8, 381, 228, 28, -28), а шість2- в інших числах (-82, 228, 28, -28, 2). Отже, ми почнемо з а13.-82: Це негативно, тому назад. Є одне3в іншому числі (382) і одне8в іншому числі (382). Отже другий вихід2.- ...
228: Це позитивно, тому вперед. Є три2'S в інших числах (28,-28,-2), а ще три2-х, і два8«S в інших числах (28,-28). Отже, цей вихід є8.- тощо.
Правила виклику:
- Ви можете припустити, що вхід ніколи не міститиме
0як елемент, оскільки він не є ні позитивним, ні негативним. - Можна припустити, що список вхідних даних завжди буде містити щонайменше два елементи.
- Введення / виведення гнучко. Вхід / вихід може бути масивом / списком цілих чисел, розділеним рядком, цифрою / символом-матрицею тощо.
- Якщо перше число у списку - це від’ємне число, або останнє число у списку - додатне число, воно буде 0 у отриманому списку.
- При непарних списках числа, що містять одну і ту ж цифру кілька разів, підраховуються кілька разів, як і
228в непарному прикладі вище, в результаті чого8(3 + 3 + 2) замість5(3 + 2).
Загальні правила:
- Це код-гольф , тому найкоротша відповідь у байтах виграє.
Не дозволяйте мовам з кодовим гольфом відштовхувати вас від публікації відповідей з мов, що не кодують гольф. Спробуйте придумати якомога коротшу відповідь на "будь-яку" мову програмування. - Стандартні правила застосовуються до вашої відповіді, тому вам дозволяється використовувати STDIN / STDOUT, функції / метод із відповідними параметрами та повним програмами типу return. Твій дзвінок.
- Лазівки за замовчуванням заборонені.
- Якщо можливо, додайте посилання з тестом для вашого коду.
- Також, будь ласка, додайте пояснення, якщо це необхідно.
Тестові приклади:
Input: [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2, 4, 1, 2, 1, 1, 5 ]
Input: [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13, 2, 2, 4, 8, 3, 0, 11, 6 ]
Input: [10, -11, 12, -13, 14, -15, 16, -17, 18, -19]
Output: [9, 1, 7, 3, 5, 5, 3, 7, 1, 9 ]
Input: [10, -11, 12, -13, 14, -15, 16, -17, 18, -19, 20]
Output: [11, 2, 8, 4, 5, 6, 3, 8, 1, 10, 0 ]
Input: [88, 492, -938, 2747, 828, 84710, -29, -90, -37791]
Output: [8, 9, 3, 9, 3, 4, 5, 4, 12 ]
Input: [-1, 11, 11, 1]
Output: [0, 2, 1, 0]
Input: [1, 11, 11, -1]
Output: [3, 2, 1, 3 ]
Input: [-1, 11, 1]
Output: [0, 2, 0]
Input: [1, 11, -1]
Output: [3, 2, 3 ]
δ¢, ніколи не бачив подвійного вектора, що використовується добре, приємний.