Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 39

Написать скрипты на PowerShell (.ps1) 1.Нахожденияе числа Фибоначчи по номеру 2.Вывод измененных файлов каталога

17.01.2019, 02:04. Показов 6753. Ответов 31

Студворк — интернет-сервис помощи студентам
Здравствуйте, нужна помощь в написании двух скриптов на PowerShell (расширение .ps1)

1. Выведите число Фибоначчи по его номеру, вводимому с клавиатуры.
Первые два числа Фибоначчи равны 1; каждое следующее равно сумме
двух непосредственно предшествующих ему чисел Фибоначчи.

2. Выведите на экран названия файлов каталога, указанного в качестве
первого параметра командной строки, которые изменены в год, номер
которого указан во втором аргументе
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.01.2019, 02:04
Ответы с готовыми решениями:

Написать программу, которая обеспечивает:начальное формирование каталога файлов;вывод каталога файлов;удаление файлов...
Уважаемые хакеры!Прошу вашей помощи!Я в СИ не особо шарю.((( А на днях уже сдавать.Очень рассчитываю на любую вашу помощь. Вот задача. ...

Как в PS1 выводить количество файлов и подкаталогов домашнего каталога?
В задаче требуется изменить конфигурационный файл командного интерпретатора, чтобы формировалась динамически изменяющаяся и наследуемая в...

Скрипты Linux, удаление файлов из каталога, подсчет файлов в каталоге
С linux столкнулась не по своей воле, но приходиться изучать, я совсершенно еще зеленая в Линуксе, если есть проффесионалы, могли бы...

31
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
17.01.2019, 20:47
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от KDE777 Посмотреть сообщение
Лёгким движением добавляем фен-шуй и снимаем ограничение Double
Ну, собственно, да, можно и так:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
$n = read-host "Введите номер числа (от 3 и более)"
if($n -le 2){
    write-host число должно быть положительным и больше 2 -for red
    sleep 3
    break
}
for ($b,$f1,$f2,$i=0,1,2,4; $i -le $n; $i++) { 
    [bigint]$b=$f1 
    [bigint]$f1=$f2
    [bigint]$f2=$b+$f1
} 
write-output "Fib($n)=$f2"
В моем примере, массив был нужен для получения любого номера (в разумных пределах) от 1 и до конечного, т.е. с помощью массива расчет делался один раз, вместо вычислений для каждого номера из произвольно выбранных нескольких номеров...
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
17.01.2019, 20:47
или без всякой функции:

PowerShell
1
2
3
4
$path = Read-Host 'enter Path'
$year = Read-Host 'enter Year'
 
cls; dir $path | ? {$_.LastWriteTime.Year -eq $year}
0
0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 39
17.01.2019, 20:53  [ТС]
Не беспокойтесь, у меня уже есть все, что нужно. Лучше скажите, вы не разбираетесь в bash скриптах?
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
17.01.2019, 20:55
Если требуется выводить достаточно большие величины, пожалуй, стоит задуматься над использованием матриц.
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using namespace System.Windows.Media
 
Add-Type -AssemblyName WindowsBase
 
function fib {
  [OutputType([Double])]
  param(
    [Parameter(Mandatory)]
    [ValidateScript({$_ -ge 1})]
    [UInt16]$n # максимально допустимое значение 65535
  )
  
  process {
    $m1, $m2 = [Matrix]::new(1,0,0,1,0,0), [Matrix]::new(1,1,1,0,0,0)
    for ($i = 1; $i -lt $n; $i++) { $m1 *= $m2 }
    $m1.M11
  }
}
Цитата Сообщение от Rocksos
Лучше скажите, вы не разбираетесь в bash скриптах?
Должно быть сейчас последует просьба все перевести на рельсы bash.
3
0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 39
17.01.2019, 20:57  [ТС]
Нет, у меня другая задача в bash, связанная с символическими ссылками
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
17.01.2019, 21:00
Цитата Сообщение от YuS_2 Посмотреть сообщение
т.е. с помощью массива расчет делался один раз
Всё равно в следующий раз могут попросить больший номер

Цитата Сообщение от Rocksos Посмотреть сообщение
Не беспокойтесь, у меня уже есть все, что нужно
Я не беспокоюсь, а просто интересно (т.к пример предельно простой), почему не заработало?

Цитата Сообщение от Rocksos Посмотреть сообщение
вы не разбираетесь в bash скриптах
В bash скриптах разбираются тут - https://www.cyberforum.ru/shell/
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
17.01.2019, 21:01
Rocksos, что именно нужно?

Не по теме:

KDE777, YuS_2, ну и вы строчите с первой космической, аж с ответом запоздал, про [BigInt] даже не увидел сообщения. В случае с матрицами результат в Double, но сам алгоритм O(n) ежели чего.

0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
17.01.2019, 21:14
Цитата Сообщение от greg zakharov Посмотреть сообщение
но сам алгоритм O(n) ежели чего
Ага, всех обогнали!

PowerShell
1
2
3
4
5
6
$nn = 1400
(1..10 |%{ (Measure-Command {$f1,$f2,$b = 1,2,0; $n=$nn; for($i=3; $i -le $n; $i++){$b=$f1; $f1=$f2; $f2=$b+$f1};$f2}).TotalMilliseconds}|Measure-Object -Average).Average
''
(1..10 |% {(Measure-Command {$k = $nn+1; $arr=new-object 'bigint[]' ($k+1); for($i=0;$i -le $k;$i++){if ($i -lt 2){$arr[$i] = $i}else{$arr[$i]=$arr[$i-1]+$arr[$i-2]}}; $arr[-1]}).TotalMilliseconds}|Measure-Object -Average).Average
''
(1..10 |%{ (Measure-Command {fib ($nn+1)}).TotalMilliseconds}|Measure-Object -Average).Average
Code
1
2
3
4
5
19,70316
 
18,0718
 
7,80317
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
17.01.2019, 21:18
Цитата Сообщение от KDE777 Посмотреть сообщение
Всё равно в следующий раз могут попросить больший номер
Дык, не было надобности, на тот момент, а если вдруг, то вот выше и решение для определенного номера, причем без ограничения на максимальный номер (естественно, в пределах ограничения самого типа числа).

Цитата Сообщение от greg zakharov Посмотреть сообщение
стоит задуматься над использованием матриц
Можно и матрицами, только это, конечно, усложнит скрипт, а студенты могут и не иметь понятия о матрицах

Цитата Сообщение от greg zakharov Посмотреть сообщение
ну и вы строчите с первой космической
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
17.01.2019, 21:29
Цитата Сообщение от KDE777 Посмотреть сообщение
19,70316
18,0718
7,80317
Не, это не корректные замеры Там в первых двух вариантах переменные оставались [BigInt] типа...

Если всё привести к double и запустить в новом ISE - получится полная ничья (для 1400 номера)

PowerShell
1
2
3
4
5
6
$nn = 1400
(1..10 |%{ (Measure-Command {$f1,$f2,$b = 1,2,0; $n=$nn; for($i=3; $i -le $n; $i++){$b=$f1; $f1=$f2; $f2=$b+$f1};$f2}).TotalMilliseconds}|Measure-Object -Average).Average
''
(1..10 |% {(Measure-Command {$k = $nn+1; $arr=new-object 'double[]' ($k+1); for($i=0;$i -le $k;$i++){if ($i -lt 2){$arr[$i] = $i}else{$arr[$i]=$arr[$i-1]+$arr[$i-2]}}; $arr[-1]}).TotalMilliseconds}|Measure-Object -Average).Average
''
(1..10 |%{ (Measure-Command {fib ($nn+1)}).TotalMilliseconds}|Measure-Object -Average).Average
Code
1
2
3
4
5
7,91295
 
8,12313
 
7,72487
Вариант 1, по моему самый простой/наглядный, а вариант 2 бонусом сохраняет и все меньшие номера...
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
17.01.2019, 21:41
Цитата Сообщение от KDE777 Посмотреть сообщение
Вариант 1, по моему самый простой/наглядный, а вариант 2 бонусом сохраняет и все меньшие номера...
да, использование того или иного варианта будет зависеть от конечной задачи...
у варианта 1 плюс в том, что нет ограничения на максимальный номер, в отличие от варианта 2, где максимальный номер будет зависеть от ограничения на размер массива, т.е. от конфигурации железа, как минимум...
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
18.01.2019, 17:32
Тема была бы неполной, если бы не было добавлено немного brainfuck'а
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
using namespace System.IO
using namespace System.Text
 
function Invoke-BrainFuck {
  [CmdletBinding(DefaultParameterSetName='Path')]
  param(
    [Parameter(Mandatory, ParameterSetName='Path', Position=0)]
    [ValidateScript({($script:src = Get-Item $_ -ea 0
    ) -and $src.Extension -cmatch '^.bf?$'})]
    [ValidateNotNullOrEmpty()]
    [String]$Path,
 
    [Parameter(Mandatory, ParameterSetName='Code', Position=0)]
    [ValidateNotNullOrEmpty()]
    [String]$Code
  )
 
  process {
    $x, $ops = '$i=0;$b=[Byte[]]::new($c.Length);', ((,$null*43)+'$b[$i]++'+
    '$b[$i]=$host.UI.ReadLine()'+'$b[$i]--'+'Write-Host $([Char]$b[$i]) -N'+
    (,$null*13)+'$i--'+$null+'$i++'+(,$null*28)+'while($b[$i]){'+$null+'}')
    .([ScriptBlock]::Create("$x$(($c = switch ($PSCmdlet.ParameterSetName) {
      'Path' { [File]::ReadAllBytes($src.FullName) }
      'Code' { [Encoding]::ASCII.GetBytes($Code)   }
    }).ForEach{"$($ops[$_]);"})"))
  }
}
Это черновой вариант, тем не менее позволяющий вывести числа Фибоначчи следующим кодом (сам ряд чисел, не по индексу):
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# собственно brainfuck
$fib = @'
>++++++++++>+>+[
   [+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[
      [-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-
          [>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>
   ]<<<
]
'@
 
# исполняем код
Invoke-BrainFuck -Code $fib
# или с предварительным сохранением
# Out-File fibonacci.b -InputObject $fib -Encoding ASCII
# Invoke-BrainFuck fibonacci.b
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.01.2019, 17:32

Запуск нескольких ps1 скриптов через Powershell
Всем привет. Есть папка в которой находятся ещё папки, в этих папка лежат файлы с одинаковым именем. Например ...

Как правильно дебаггить ps1-скрипты?
Если команда запускается из ISE, но не работает из командлета, как правильно дебаггить в таком случае? Я правильно понимаю, что PoSh...

Вывод файлов папки, измененных после даты создания самой папки
я так понимаю, надо использовать ls, но с какими параметрами. также, я не ориентируюсь в синтаксисе баша. Может кто напишет скриптик для...

Составить программу определения числа Фибоначчи по его номеру в последовательности
Числа Фибоначчи 1, 1, 2, 3, 5, 8, 13 и т.д. В общем случае числа Фибоначчи (fn) определяются формулами: f0=f1=1; fn=fn-1+fn-2 при n=2,3,......

Поиск числа Фибоначчи (через операторы цикла for, while и do . while) по его номеру в последовательности
Здравствуйте,подскажите,пожалуйста, как реализовать это тз для отрицательного значения,при этом ,используя циклы? Я могу реализовать это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал Материалы для обсуждения с МГСУ · 2026 Рисунки внутри приложенного ворд файла. Что за. . .
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно» Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
26. мед мат модель.Какие типы конфликтов функциональных требований можно рассчитать через ДЕС-моделирование (СМО) в AnyLogic?
anaschu 22.06.2026
Что ДЕС/ СМО умеет считать напрямую: Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
25 модель здравосохранения и функциональных требований к пищеблоку: конфликты функциональных требований.
anaschu 22.06.2026
Есть ли данные о том, какие функциональные/ эксплуатационные требования или их сочетания труднее всего учитывать при проектировании зданий? Да, такие данные есть, и они хорошо описаны и в российской,. . .
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу: https:/ / github. com/ altbodhi/ ReConMan По итогу пришел к мысли, что DU не дружат с существующими технологиями. От сериализации до отображения в реляционную. . .
Администрация Хабра удаляет новые энрегоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерировавны.
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru