У нас есть 4 выключателя, расположенных последовательно в ряд. Каждый может находится в одном из двух положений - выключено (обозначается нулем) и включено (обозначается единицей). Свет включается, если включены хотя бы два выключателя, притом если включены два, то они не должны находиться рядом. программа на с++
Формат ввода
Вводятся четыре числа, каждое из которых равно 0 или 1.
Формат вывода
Требуется вывести YES, если свет загорится и NO в противном случае.
Пример 1
Ввод
Вывод
1 0 1 0
YES
Пример 2
Ввод
Вывод
0 0 1 1
NO
Пример 3
Ввод
Вывод
1 0 0 1
YES
yxwz
Объяснение:
Чтобы значение функции (¬x ≡ z) → (y ≡ (w ∨ x)) было ложным, выражение ¬x ≡ z должно быть истинным, а выражение y ≡ (w ∨ x) – ложным. Чтобы первое выражение было истинным, переменные x и z должны иметь противоположные значения: 0 и 1 или 1 и 0.
Рассмотрим третью строку таблицы. Три переменных равны нулю, F = 0. Значит, оставшаяся переменная (переменная 2 в таблице) равна 1, и это z или x. Тогда y = 0, w = 0, и чтобы выражение y ≡ (w ∨ x) было ложным, необходимо, чтобы x = 1. Значит, второй столбец – x. Другой подходящей комбинации с тремя нулями быть не может, значит, в пустых клетках в первой и второй строках таблицы должны стоять единицы.
Поскольку x и z должны иметь разные значения, а x – это переменная 2, из первой и второй строк таблицы видим, что z – переменная 4.
Рассмотрим вторую строку. В ней x = 1, тогда w ∨ x= 1 независимо от значения w, и чтобы выражение y ≡ (w ∨ x) было ложным, необходимо, чтобы y = 0. Получается, что y – переменная 1, w – переменная 3.
<Code>
--- Python 3.8.3 ---
import typing
from typing import Callable
from typing import AnyStr
from typing import Any
import re
import string
def StringCount(RawString: AnyStr, Selector: Callable[[AnyStr], bool], splitter: AnyStr = None) -> int:
'''Подсчитывает кол-во вхождений элемента, удовлетворяющего условию, в строку или подстроку при заданном splitter'''
counter = 0
if splitter:
ToAnalyse = RawString.split(splitter)
else:
ToAnalyse = list(RawString)
for item in ToAnalyse:
if Selector(item): counter += 1
return counter
def main():
Strings = [input() for i in range(int(input()))]
for s in Strings:
Uppercase = StringCount(s, lambda p: lambda p: p.isupper())
Spaces = s.count(' ')
print(f'String: {s}\nSpaces: {Spaces}\nUppercase: {Uppercase}')
if __name__ == "__main__":
main()
<\Code>
На скриншотах приложены тесты программы.