Программа для подсчёта количества всех существующих чисел со неповторяющимися цифрами с выводом на экран количества этих чисел и записью в файл отсортированных по возрастанию чисел.
Дано: цифры от 0 до 9.
Составить все комбинации и целых и дробных чисел со неповторяющимися цифрами.
Решение:
Global NewList Num$() Procedure$ ShiftSeparator(Value$, Shift); Shift = 0..9 Value$ = InsertString(Value$, ".", Len(Value$) - Shift) If Left(Value$, 1) = "." Value$ = "0" + Value$ EndIf If Right(Value$, 1) = "0" Value$ = Left(Value$, Len(Value$) - 1) EndIf If Right(Value$, 1) = "." Value$ = Left(Value$, Len(Value$) - 1) EndIf ProcedureReturn Value$ EndProcedure Procedure AddOnce(Value$) IsFound = #False ForEach Num$() If Num$() = Value$ IsFound = #True Break EndIf Next If IsFound = #False AddElement(Num$()) Num$() = Value$ EndIf EndProcedure OpenConsole("Поиск всех чисел со неповторяющимися цифрами.") PrintN("Составление списка изо чисел, удовлетворяющих условию выборки.") For CurrentNumber = -9876543210 To 9876543210 String$ = Str(CurrentNumber) If CountString(String$, "0") <= 1 And CountString(String$, "1") <= 1 And CountString(String$, "2") <= 1 And CountString(String$, "3") <= 1 And CountString(String$, "4") <= 1 And CountString(String$, "5") <= 1 And CountString(String$, "6") <= 1 And CountString(String$, "7") <= 1 And CountString(String$, "8") <= 1 And CountString(String$, "9") <= 1 AddOnce(String$) AddOnce("-"+String$) If String$ <> "0" For i = 0 To 9 S$ = ShiftSeparator(String$, i) If CountString(S$, "0") <= 1 AddOnce(S$) AddOnce("-"+S$) EndIf Next EndIf EndIf Next PrintN("Количество чисел со неповторяющимися цифрами равно "+Str(ListSize(Num$())) + ".") PrintN("Сортировка списка чисел по возрастанию...") SortList(Num$(), #PB_Sort_Ascending) PrintN("Запись всех чисел во текстовый файл...") File = CreateFile(#PB_Any, "Список всех чисел со неповторяющимися цифрами.txt") ForEach Num$() WriteStringN(File, Num$(), #PB_Ascii) Next PrintN("Готово! Нажмите [ВВОД].") Input() End 0
Требуется мощный хотя бы одноядерный процессор с большой тактовой частотою и много оперативной памяти...
Решение могло быть и оптимальнее, но я не гнался за ним потому как мой компьютер всё равно не провернёт такое, а на мощном можно было бы и подождать чуть дольше.
Отредактировано PSY (15.05.2024 10:14:19)