// PascalABC.NET 3.3, сборка 1634 от 14.02.2018 // Внимание! Если программа не работает, обновите версию!
begin var s:=Arr('Клиндухова','Кобзарь','козловский','капша','мороз Артем', 'Мороз ИЛья','Павлова','Глухих'); s.Println; s:=s.OrderBy(t->t.ToUpper).ToArray; s.Println end.
В принципе, можно расписать, что делает эта программа (см. вложение). Так как изначально a[6] = 0, то a[3] = 50 раз к a[5] прибавится 2 * a[4] = 38, получится 38 * 50 + a[5] = 1917, затем значение a[5] будет выведено на экран.
Но проще не мучиться и просто написать программу, выполняющую этот код.
stack = [] transitions = [None] * len(program) for k, op in enumerate(program): if op == '[': stack.append(k) elif op == ']': v = stack.pop() transitions[k] = v + 1 transitions[v] = k + 1
k = 0 while k < len(program): op = program[k] if op == '.': print(array[array_position]) elif op == '>': array_position += 1 elif op == '<': array_position -= 1 elif op == '[' and array[array_position] == 0: k = transitions[k] continue elif op == ']' and array[array_position] != 0: k = transitions[k] continue elif op == '+': array[array_position] += 1 elif op == '-': array[array_position] -= 1 k += 1
В принципе, можно расписать, что делает эта программа (см. вложение). Так как изначально a[6] = 0, то a[3] = 50 раз к a[5] прибавится 2 * a[4] = 38, получится 38 * 50 + a[5] = 1917, затем значение a[5] будет выведено на экран.
Но проще не мучиться и просто написать программу, выполняющую этот код.
stack = [] transitions = [None] * len(program) for k, op in enumerate(program): if op == '[': stack.append(k) elif op == ']': v = stack.pop() transitions[k] = v + 1 transitions[v] = k + 1
k = 0 while k < len(program): op = program[k] if op == '.': print(array[array_position]) elif op == '>': array_position += 1 elif op == '<': array_position -= 1 elif op == '[' and array[array_position] == 0: k = transitions[k] continue elif op == ']' and array[array_position] != 0: k = transitions[k] continue elif op == '+': array[array_position] += 1 elif op == '-': array[array_position] -= 1 k += 1
// Внимание! Если программа не работает, обновите версию!
begin
var s:=Arr('Клиндухова','Кобзарь','козловский','капша','мороз Артем',
'Мороз ИЛья','Павлова','Глухих');
s.Println;
s:=s.OrderBy(t->t.ToUpper).ToArray;
s.Println
end.