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:)