Форум программистов, компьютерный форум, киберфорум
alhaos
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Задача: Persistent Bugger

Запись от alhaos размещена 02.08.2021 в 13:09
Показов 2360 Комментарии 1
Метки powershell

(с) https://www.codewars.com/kata/... d57e0000ec
Write a function, persistence, that takes in a positive parameter num and returns its multiplicative persistence, which is the number of times you must multiply the digits in num until you reach a single digit.

For example:

persistence(39) == 3 // because 3*9 = 27, 2*7 = 14, 1*4=4
// and 4 has only one digit

persistence(999) == 4 // because 9*9*9 = 729, 7*2*9 = 126,
// 1*2*6 = 12, and finally 1*2 = 2

persistence(4) == 0 // because 4 is already a one-digit number


PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using namespace System.Linq;
$DebugPreference = "continue"
class kata {
    static [int] PersistentBugger ([int]$val_){
        Write-Debug ("{0}: {1}" -f $val_, 1)
        
        [int[]]$digitsIntArray = $val_.ToString().ToCharArray().ForEach{[char]::GetNumericValue($_)}
        if(($AggregateResult = [Enumerable]::Aggregate($digitsIntArray, [Func[int,int,int]]{$args[0]*$args[1]})) -lt 10){
            return 0
        }
        else {
            $result = [kata]::PersistentBugger($AggregateResult, 1) 
        }
        return $result
    }
    
    static [int] PersistentBugger ([int]$val_, [int]$iterationBill){
        $iterationBill++
        Write-Debug ("{0}: {1}" -f $val_, $iterationBill)
        
        [int[]]$digitsIntArray = $val_.ToString().ToCharArray().ForEach{[char]::GetNumericValue($_)}
        if(($AggregateResult = [Enumerable]::Aggregate($digitsIntArray, [Func[int,int,int]]{$args[0]*$args[1]})) -lt 10){
            return $iterationBill
        }
        else {
            $iterationBill = [kata]::PersistentBugger($AggregateResult, $iterationBill) 
        }
        return $iterationBill
    }
}
 
[kata]::PersistentBugger(39)
[kata]::PersistentBugger(999)
[kata]::PersistentBugger(4)
Code
1
2
3
4
5
6
7
8
9
10
11
12
PS C:\tmp\SandBox> c:\tmp\SandBox\tmp.ps1
DEBUG: 39: 1
DEBUG: 27: 2
DEBUG: 14: 3
3
DEBUG: 999: 1
DEBUG: 729: 2
DEBUG: 126: 3
DEBUG: 12: 4
4
DEBUG: 4: 1
0
Метки powershell
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
  1. Старый комментарий
    PowerShell
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    function persistence {
      param([Int32]$n)
      end {
        $counter = 0
        while ([Math]::Floor([Math]::Log10($n) + 1) -ne 1) {
          $n = Invoke-Expression ([Char[]]"$n" -join '*')
          ++$counter
        }
        $counter
      }
    }
    Запись от greg zakharov размещена 01.06.2023 в 23:18 greg zakharov вне форума
 
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Video: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru