Вот решение в Python.
#!/usr/bin/env python
def brackets_match(brackets):
stack = []
for char in brackets:
if char == "{" or char == "(" or char == "[":
stack.append(char)
if char == "}":
if stack[-1] == "{":
stack.pop()
else:
return False
elif char == "]":
if stack[-1] == "[":
stack.pop()
else:
return False
elif char == ")":
if stack[-1] == "(":
stack.pop()
else:
return False
if len(stack) == 0:
return True
else:
return False
if __name__ == "__main__":
print(brackets_match("This is testing {([])} if brackets have match."))
Для меня значение "промежуточного" заключается в том, что вы находитесь на грани развертывания в производственной среде, поэтому вам нужна среда, которая максимально точно имитирует производственную среду, чтобы минимизировать любые проблемы, которые могут возникают в результате воздействия различных сред. Например, среды разработки и тестирования могут иметь определенные утилиты, которых нет в производственной среде, или производственная среда может иметь более строгие разрешения и аутентификацию, которые могут вызвать проблемы с вашим приложением.
Таким образом, идеальная промежуточная среда - это та, которая точный клон производственной среды (хотя и без публичного доступа). Если вы используете виртуализированные серверы, это должно быть почти тривиально. Если не, тогда среда должна максимально точно имитировать производственную среду (приложение должно быть развернуто по тому же пути, разрешения должны быть идентичными, файлы конфигурации должны быть копиями производственной среды и т. д.). Чтобы ответить на ваши вопросы:
Q
, затем
. Если ты хочешь сделать
небуферизованный ввод-вывод, я бы предложил проверить библиотеку ruby curses. Вы также можете изучить библиотеку 'io / wait' для Ruby, которая предоставляет метод ready?
для всех объектов ввода-вывода. Я не тестировал вашу ситуацию специально, но использую ее в библиотеке на основе сокетов, над которой я работаю. В вашем случае, при условии, что STDIN - это просто стандартный объект ввода-вывода, вы, вероятно, могли бы выйти в тот момент, когда готов?
вернет результат, отличный от нуля, если вы не хотите узнать, какая клавиша была фактически нажата. Эту функциональность можно получить с помощью require 'io / wait'
, который является частью стандартной библиотеки Ruby. Я не уверен, что он работает во всех средах, но попробовать стоит. Rdocs: http://ruby-doc.org/stdlib/libdoc/io/wait/rdoc/