Vim - чудовий текстовий редактор для Unix-систем, однак він відомий тим, що важко вийти.
Напишіть повну програму, яка виведе :q
для виходу з Vim. Потім він повинен прочитати один рядок введення, оскільки тоді йому буде надано підказку bash, і в цьому випадку вихід був успішним, або помилка, і в цьому випадку є незбережені зміни.
Підказка bash буде такою:
E37@vimmachine: /var/override)
Поки помилка буде такою:
E37: No write since last change (add ! to override)
Після введення bash-підказки робота програми виконується, і вона не повинна давати більше результатів (за винятком пробілів).
Після помилки ваша програма повинна випадковим чином (тобто кожна можливість має ненульову ймовірність бути обраним) :q!
, вийти без збереження або :x
зберегти та вийти.
Це код-гольф, тому виграє найменше байтів на кожній мові !
E37: No write since last change
? Тобто, як алгоритм може відрізнити запит від повідомлення про помилку?
E37@vimmachine: /var/override)
:x
для виходу з vim. Коли-небудь ви випадково потрапите, :X
а потім випадкові клавіші, коли заплутаєтесь. Після того як ви нарешті :wq
більше ніколи не побачите свій файл.
:x
це річ! Я завжди використовував:wq
:)