upd
This commit is contained in:
@@ -0,0 +1,34 @@
|
|||||||
|
// #include <iostream>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
size_t incremental_seq(const T& cnt) {
|
||||||
|
int max_len = 0;
|
||||||
|
|
||||||
|
auto iter = cnt.begin();
|
||||||
|
|
||||||
|
int last = *iter;
|
||||||
|
int now = 1;
|
||||||
|
while (iter != cnt.end()) {
|
||||||
|
if (last + 1 == *iter) {
|
||||||
|
++now;
|
||||||
|
} else {
|
||||||
|
max_len = std::max(max_len, now);
|
||||||
|
now = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
last = *iter;
|
||||||
|
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
|
||||||
|
return max_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// int main() {
|
||||||
|
// std::vector v{ 4,1,2,3,4,3,4,5 };
|
||||||
|
// std::cout << incremental_seq(v) << std::endl;
|
||||||
|
|
||||||
|
// return 0;
|
||||||
|
// }
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
#include <vector>
|
||||||
|
#include <iostream>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
template <typename I, typename F>
|
||||||
|
I separate(I beg, I end, F pred) {
|
||||||
|
auto tmp = beg;
|
||||||
|
while (tmp != end) {
|
||||||
|
std::cout << *tmp << std::endl;
|
||||||
|
++tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
auto r = remove_if(beg, end, pred);
|
||||||
|
|
||||||
|
tmp = beg;
|
||||||
|
while (tmp != end) {
|
||||||
|
std::cout << *tmp << std::endl;
|
||||||
|
++tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << "meow" << std::endl;
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::vector v{ 1, -2, 3, -4, 5, -6 };
|
||||||
|
auto r = separate(v.begin(), v.end(), [](auto x) { return x >= 0; });
|
||||||
|
|
||||||
|
// std::cout << std::distance(v.begin(), r) << std::endl << std::endl;
|
||||||
|
|
||||||
|
for (auto& item : v) {
|
||||||
|
std::cout << item << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#include <vector>
|
||||||
|
// #include <iostream>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
template <typename I, typename F>
|
||||||
|
I separate(I beg, I end, F pred) {
|
||||||
|
std::vector<int> mas_to;
|
||||||
|
std::copy_if(beg, end, std::back_inserter(mas_to), pred);
|
||||||
|
|
||||||
|
auto r = remove_if(beg, end, pred);
|
||||||
|
std::copy(mas_to.begin(), mas_to.end(), r);
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
// int main() {
|
||||||
|
// std::vector v{ 1, -2, 3, -4, 5, -6 };
|
||||||
|
// auto r = separate(v.begin(), v.end(), [](auto x) { return x >= 0; });
|
||||||
|
|
||||||
|
// // std::cout << std::distance(v.begin(), r) << std::endl << std::endl;
|
||||||
|
|
||||||
|
// std::cout << "meow" << std::endl;
|
||||||
|
|
||||||
|
// for (auto& item : v) {
|
||||||
|
// std::cout << item << std::endl;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return 0;
|
||||||
|
// }
|
||||||
@@ -0,0 +1,115 @@
|
|||||||
|
#include <map>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
bool is_num(std::string& s) {
|
||||||
|
auto iter = s.begin();
|
||||||
|
while (iter != s.end() && std::isdigit(*iter)) ++iter;
|
||||||
|
return iter == s.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
enum TokenKind
|
||||||
|
{
|
||||||
|
T_EOF, // end of input stream
|
||||||
|
T_NUMBER, // int64 number
|
||||||
|
T_ID, // identifier
|
||||||
|
K_ALG,
|
||||||
|
K_ARG,
|
||||||
|
K_RES,
|
||||||
|
K_NACH,
|
||||||
|
K_KON,
|
||||||
|
K_TSEL,
|
||||||
|
K_VESHCH,
|
||||||
|
K_SIM,
|
||||||
|
K_LIT,
|
||||||
|
K_LOG,
|
||||||
|
K_TAB,
|
||||||
|
K_NTS,
|
||||||
|
K_KTS,
|
||||||
|
K_DLIN,
|
||||||
|
K_DANO,
|
||||||
|
K_NADO,
|
||||||
|
K_ESLI,
|
||||||
|
K_TO,
|
||||||
|
K_INACHE,
|
||||||
|
K_VSE,
|
||||||
|
K_POKA,
|
||||||
|
K_DLYA,
|
||||||
|
K_OT,
|
||||||
|
K_DO,
|
||||||
|
K_ZNACH,
|
||||||
|
K_I,
|
||||||
|
K_ILI,
|
||||||
|
K_NE,
|
||||||
|
K_DA,
|
||||||
|
K_NET,
|
||||||
|
K_PRI,
|
||||||
|
K_VYBOR,
|
||||||
|
K_VVOD,
|
||||||
|
K_VYVOD,
|
||||||
|
K_UTV,
|
||||||
|
T_SEMICOLON,
|
||||||
|
T_COMMA,
|
||||||
|
T_ASSIGN,
|
||||||
|
T_LBR,
|
||||||
|
T_RBR,
|
||||||
|
T_LSQBR,
|
||||||
|
T_RSQBR,
|
||||||
|
T_PLUS,
|
||||||
|
T_MINUS,
|
||||||
|
T_MUL,
|
||||||
|
T_DIV,
|
||||||
|
T_EQ,
|
||||||
|
T_NE,
|
||||||
|
T_GT,
|
||||||
|
T_GE,
|
||||||
|
T_LT,
|
||||||
|
T_LE
|
||||||
|
};
|
||||||
|
|
||||||
|
const std::string tokens[] =
|
||||||
|
{
|
||||||
|
"", // EOF
|
||||||
|
"", // NUMBER
|
||||||
|
"", // ID
|
||||||
|
"алг", "арг", "рез", "нач", "кон", "цел", "вещ", "сим", "лит", "лог",
|
||||||
|
"таб", "нц", "кц", "длин", "дано", "надо", "если", "то", "иначе", "все",
|
||||||
|
"пока", "для", "от", "до", "знач", "и", "или", "не", "да", "нет",
|
||||||
|
"при", "выбор", "ввод", "вывод", "утв",
|
||||||
|
";", ",", ":=", "(", ")", "[", "]", "+", "-", "*",
|
||||||
|
"/", "=", "!=", ">", ">=", "<", "<=",
|
||||||
|
};
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
// строим словарь соответствий
|
||||||
|
std::map<std::string, TokenKind> mp;
|
||||||
|
|
||||||
|
int tmp = 0;
|
||||||
|
for (auto& wd : tokens) {
|
||||||
|
mp[wd] = TokenKind(tmp++);
|
||||||
|
}
|
||||||
|
|
||||||
|
// std::cout << mp["алг"] << " " << mp[";"];
|
||||||
|
|
||||||
|
// std::string s1("123");
|
||||||
|
// std::string s2("12a3");
|
||||||
|
// std::cout << is_num(s1) << is_num(s2);
|
||||||
|
// return -1;
|
||||||
|
|
||||||
|
std::string word;
|
||||||
|
|
||||||
|
while (std::cin >> word) {
|
||||||
|
if (mp.find(word) != mp.end()) {
|
||||||
|
std::cout << mp[word];
|
||||||
|
} else if (is_num(word)) {
|
||||||
|
std::cout << 1 << ':' << word;
|
||||||
|
} else {
|
||||||
|
std::cout << 2 << ':' << word;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << 0 << std::endl;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
#include <map>
|
||||||
|
#include <iostream>
|
||||||
|
#include <vector>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
enum TokenKind
|
||||||
|
{
|
||||||
|
T_EOF, // end of input stream
|
||||||
|
T_NUMBER, // int64 number
|
||||||
|
T_ID, // identifier
|
||||||
|
K_ALG,
|
||||||
|
K_ARG,
|
||||||
|
K_RES,
|
||||||
|
K_NACH,
|
||||||
|
K_KON,
|
||||||
|
K_TSEL,
|
||||||
|
K_VESHCH,
|
||||||
|
K_SIM,
|
||||||
|
K_LIT,
|
||||||
|
K_LOG,
|
||||||
|
K_TAB,
|
||||||
|
K_NTS,
|
||||||
|
K_KTS,
|
||||||
|
K_DLIN,
|
||||||
|
K_DANO,
|
||||||
|
K_NADO,
|
||||||
|
K_ESLI,
|
||||||
|
K_TO,
|
||||||
|
K_INACHE,
|
||||||
|
K_VSE,
|
||||||
|
K_POKA,
|
||||||
|
K_DLYA,
|
||||||
|
K_OT,
|
||||||
|
K_DO,
|
||||||
|
K_ZNACH,
|
||||||
|
K_I,
|
||||||
|
K_ILI,
|
||||||
|
K_NE,
|
||||||
|
K_DA,
|
||||||
|
K_NET,
|
||||||
|
K_PRI,
|
||||||
|
K_VYBOR,
|
||||||
|
K_VVOD,
|
||||||
|
K_VYVOD,
|
||||||
|
K_UTV,
|
||||||
|
T_SEMICOLON,
|
||||||
|
T_COMMA,
|
||||||
|
T_ASSIGN,
|
||||||
|
T_LBR,
|
||||||
|
T_RBR,
|
||||||
|
T_LSQBR,
|
||||||
|
T_RSQBR,
|
||||||
|
T_PLUS,
|
||||||
|
T_MINUS,
|
||||||
|
T_MUL,
|
||||||
|
T_DIV,
|
||||||
|
T_EQ,
|
||||||
|
T_NE,
|
||||||
|
T_GT,
|
||||||
|
T_GE,
|
||||||
|
T_LT,
|
||||||
|
T_LE
|
||||||
|
};
|
||||||
|
|
||||||
|
const std::string tokens[] =
|
||||||
|
{
|
||||||
|
"", // EOF
|
||||||
|
"", // NUMBER
|
||||||
|
"", // ID
|
||||||
|
"алг", "арг", "рез", "нач", "кон", "цел", "вещ", "сим", "лит", "лог",
|
||||||
|
"таб", "нц", "кц", "длин", "дано", "надо", "если", "то", "иначе", "все",
|
||||||
|
"пока", "для", "от", "до", "знач", "и", "или", "не", "да", "нет",
|
||||||
|
"при", "выбор", "ввод", "вывод", "утв",
|
||||||
|
";", ",", ":=", "(", ")", "[", "]", "+", "-", "*",
|
||||||
|
"/", "=", "!=", ">", ">=", "<", "<=",
|
||||||
|
};
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
// строим словарь соответствий
|
||||||
|
std::map<std::string, TokenKind> mp;
|
||||||
|
|
||||||
|
int tmp = 0;
|
||||||
|
for (auto& wd : tokens) {
|
||||||
|
mp[wd] = TokenKind(tmp++);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::pair<TokenKind, std::string>> v;
|
||||||
|
for (auto& h : mp) {
|
||||||
|
v.push_back(std::make_pair(h.second, h.first));
|
||||||
|
}
|
||||||
|
|
||||||
|
std::sort(v.begin(), v.end());
|
||||||
|
|
||||||
|
int n = 0;
|
||||||
|
for (auto& h : v) {
|
||||||
|
std::cout << h.first << " <=> " << h.second << "\t";
|
||||||
|
if (!(n++ % 4)) {
|
||||||
|
std::cout << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
# Хуй знает что тут
|
# Фиг знает что тут
|
||||||
|
|
||||||
## Задания
|
## Задания
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user