В формате 40минут на решение 1. Problem 1.(45 points)
Write a function that takes a string as an argument and returns a difference between
number of consonants and vowels. The string consists only from English alphabetical
symbols. Vowels in English are “a”, “e”, “o”, “u”, “i”.
Example:
f(“apple”) → 3, because here 3 consonant letters and 2 vowels
f(“gold”) → 2, because here 3 consonant letters and 1 vowel
Напишите функцию, которая принимает на вход строку как аргумент и возвращает
единственное число – разницу между количеством согласных и гласных букв.
Строка состоит только из символов английского алфавита. В английском языке
гласными считаются буквы “a”, “e”, “o”, “u”, “i”.
Пример:
f(“apple”) → 3, потому что в этом слове 3 согласных и 2 гласных букв
f(“gold”) → 2, потому что этом слове 3 согласных букв и 1 гласная
2. Problem 2.(45 points)
Write a function, that takes two string lists word1 and word2, return true if the two lists
represent the same string, and false otherwise. A string is represented by a list if the array
elements concatenated in order forms the string.
Example:
f([“a”, “p”, “p”, “l”, “e”], [“app”, “le”]) → True
Because “a” + “p” + “p” + “l” + “e” = “apple” and “app” + “le” = “apple” gives the same
word “apple”
f([“he”, “l”, “lo”], [“he”, “lp”]) →False, because “hello” is not the same as “help”
Напишите функцию, которая на входе принимает два списка, состоящих из строк, и
возвращает True, если после конкатенации элементов первого списка, полученное
слово равно слову, полученному после конкатенации элементов второго списка. В
противном случае надо вернуть False.
Пример:
f([“a”, “p”, “p”, “l”, “e”], [“app”, “le”]) → True
Потому что “a” + “p” + “p” + “l” + “e” = “apple” and “app” + “le” = “apple”
получается одно и то же слово “apple”
f([“he”, “l”, “lo”], [“he”, “lp”]) →False, потому что help и hello – разные слова
Problem 3.(10 points)
Write a function that takes a string and return the Morse Code version of this
string. String only consists from alphabetical characters.
[".-","-...","-.-.","-..",".","..-.","--.","","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-
.","...","-","..-","...-",".--","-..-","-.--","--.."] – this is a morse code for English alphabet
Example: f(“ab”) → “.--…”
Напишите функцию, которая принимает строку и возвращает ее версию в коде
Морзе.
Например: f(“ab”) → “.--…”
var
a: array[1..l] of integer;
d: array[1..l] of real;
i, otr, k, m: integer;
begin
otr:=0; k:=0; m:=0;
//считаем массив а
for i:=1 to l do
begin
readln(a[i]);
//если ввели положительное число,увеличим перем. otr на 1
if a[i] < 0 then
inc(otr);
//если ввели отрицательное число,увеличим перем. k на 1
//и к переменной m прибавим элемент
if a[i] > 0 then
begin
inc(k);
inc(m, a[i]);
end;
end;
//заполним массив d
for i:=1 to l do
//если индекс четный, присвоим элементу otr
//иначе присвоим среднее арифметическое
if i mod 2 = 0 then
d[i] := otr
else
d[i] := m/k;
end.
(1 + 0) - истинна, т.к. дизъюнкция истинна если хотя-бы одна из переменных истинна
(0 + 0) - ложна, т.к. обе перменные ложны
(1 + 0)*(0+0) - ложна, т.к. первая скобка истинна, а вторая ложна, а в конъюнкции для истины обе скобки должны быть истинны.
1*0 - ложна, т.к. в конъюнкции обе переменные должны быть истинны.
Для удобства разделил скобками
((1 + 0)*(0+0)) + (1*0) - ложна, т.к. первая (большая) скобка ложна, вторая скобка (1*0) тоже ложна, между ними дизъюнкция, то есть хотя-бы одна из них должна быть истинна. Они обе ложны, значит результатом выражения
(1 + 0)*(0+0) + 1*0
будет 0