wget -qO /dev/null http://192.168.1.105/control?cmd=GPIO,12,1
sleep 1
wget -qO /dev/null http://192.168.1.105/control?cmd=GPIO,12,0
oh-my-zsh
: git
, colored-man
, zsh-syntax-highlighting
typeset -A key
if [[ "$TERM" != emacs ]]; then
[[ -z "$terminfo[kcuu1]" ]] || bindkey -M viins "$terminfo[kcuu1]" up-line-or-search
[[ -z "$terminfo[kcud1]" ]] || bindkey -M viins "$terminfo[kcud1]" down-line-or-search
fi
function zle-line-init () { echoti smkx }
function zle-line-finish () { echoti rmkx }
zle -N zle-line-init
zle -N zle-line-finish
DOT=~/.dotfiles
alias -g g='| grep'
alias -g l='| less -r'
alias -g m='| more -r'
alias -g copy='| pbcopy'
alias rm='rm -i'
alias vimrc='vim ~/.vimrc'
alias ff='rm -rf'
alias reload='source ~/.zshrc'
alias please='sudo'
alias su='sudo su -'
alias py='python3 '
alias ls='ls -G'
alias la='ls -A'
alias ll='la -l'
alias al="ls -ap | grep '^\.' | grep -v './$'"
alias a='ls -d .*'
alias jsc='/System/Library/Frameworks/JavaScriptCore.framework/Versions/Current/Resources/jsc'
alias gh="cat $DOT/oh-my-zsh/plugins/git/git.plugin.zsh | grep -i '^alias' | grep -i "
alias gw="cat $DOT/.git_wizardry | grep -i "
alias pl="mkdir playground/; cd playground/"
~/.zshrc
bindkey '^[[A' up-line-or-search # up arrow for back-history-search
bindkey '^[[B' down-line-or-search # down arrow for fwd-history-search
bindkey ';5D' backward-word # ctrl+left
bindkey ';5C' forward-word # ctrl+right
bindkey '\e[1~' beginning-of-line # home
bindkey '\e[2~' overwrite-mode # insert
bindkey '\e[3~' delete-char # del
bindkey '\e[4~' end-of-line # end
bindkey '\e[5~' up-line-or-history # page-up
bindkey '\e[6~' down-line-or-history # page-down
zstyle ':completion:*' insert-tab false # Автокомплит для первого символа
HISTFILE=~/.zhistory
## Число команд, сохраняемых в HISTFILE
SAVEHIST=5000
## Чucлo команд, coxpaняeмыx в сеансе
HISTSIZE=5000
DIRSTACKSIZE=20
# Опции истории команд
#Добавляет в историю время выполнения команды.
setopt extended_history
alias history='fc -il 1'
#История становится общей между всеми сессиями / терминалами.
setopt share_history
# Дополнение файла истрии
setopt APPEND_HISTORY
#Добавить команду в историю не после выполнения а перед
setopt INC_APPEND_HISTORY
# Игнopupoвaть вce пoвтopeнuя команд
setopt HIST_IGNORE_ALL_DUPS
# Удалять из файл истории пустые строки
setopt HIST_REDUCE_BLANKS
# команды «history» и «fc» в историю заноситься не будут
setopt HIST_NO_STORE
# если набрали путь к директории без комманды CD, то перейти
setopt AUTO_CD
#Сообщать при изменении статуса фонового задания
setopt NOTIFY
#Перемещение стрелочками по выбору
#setopt menucomplete
#zstyle ':completion:*' menu select=1 _complete _ignored _approximate
#Вести себя как в BASH
setopt AUTO_MENU BASH_AUTO_LIST
# исправлять неверно набранные комманды
setopt CORRECT_ALL
# вопрос на автокоррекцию
SPROMPT='zsh: Заменить '\''%R'\'' на '\''%r'\'' ? [Yes/No/Abort/Edit] '
# загружаем список цветов
autoload colors && colors
#Можно вводить комментарии начинающиеся с #.
setopt interactive_comments
autoload -U compinit promptinit
compinit
promptinit;
#Дополняем спрятанные .файлы:
_comp_options+=(globdots)
# экранируем спецсимволы в url, например &, ?, ~ и так далее
autoload -U url-quote-magic
zle -N self-insert url-quote-magic
# Включение поддержки выражений вроде «{1-3}» или «{a-d}» — они будут разворачиваться
# в «1 2 3» и «a b c d» соответственно
setopt BRACECCL
# куда же мы без калькулятора
autoload -U zcalc
if [[ $EUID == 0 ]]
then
#Закорючки %2` означают две директории в пути.
PROMPT=$'%{\e[1;31m%}%n %{\e[1;34m%}%2~%{\e[1;31m%} %#%{\e[0m%} '
else
#PROMPT=$'%{\e[1;32m%}%n %{\e[1;34m%}%~ %#%{\e[0m%} ' # root dir #
PROMPT=$'%{\e[1;31m%}%n %{\e[1;34m%}%2~%{\e[1;31m%} %#%{\e[0m%} '
fi
RPROMPT=$'%{\e[1;30m%}%T% %{\e[1;36m%} %M%{\e[0m%}' # right prompt with time
alias ls='ls --color=auto'
alias grep='grep --colour=auto'
alias df='df -k --print-type --human-readable'
alias du='du -k --total --human-readable'
alias -g HE='2>>( sed -ue "s/.*/$fg_bold[red]&$reset_color/" 1>&2 )' # Highlight Errors
# разукрашиваем команды с помощью grc
if [ -f /usr/bin/grc ]; then
alias ping='grc --colour=auto ping'
alias traceroute='grc --colour=auto traceroute'
alias make='grc --colour=auto make'
alias diff='grc --colour=auto diff»'
alias cvs='grc --colour=auto cvs'
alias netstat='grc --colour=auto netstat'
# разукрашиваем логи с помощью grc
alias logc="grc cat"
alias tail='grc --colour=auto tail -n 200 -f'
alias logh="grc head"
fi
# После перехода в директорию вызываем ls.
function lcd() {cd "$1" && ls}
##подключаем всякую фигню
#Красивый вывод mysql
export MYSQL_PS1="mysql: \d|> "
# Необходимо добавить в конфиг Mysql
# [mysql]
# pager = grcat ~/.grcat
#Раскраска строки ввода
source ~/.zsh/zsh-syntax-highlighting.zsh
bot.send_message(message.chat.id, answer, parse_mode='Markdown', disable_web_page_preview=True)
body {
font-family: 'PT Sans Caption', sans-serif;
font-size: 11px;
line-height: 120%;
font-weight: normal;
text-decoration: underline;
letter-spacing: 0px;
font-style:normal;
}
from random import randint, choice
def neighbours(cells):
return {(i, j) for y, x in cells
for i in range(y - 1, y + 2) for j in range(x - 1, x + 2)}
N = 10 # а вот менять не надо
abc, digits = 'abcdefghij', '0123456789'
field, sea_map = {}, [[' '] * N for _ in range(N)]
for size in 4, 3, 3, 2, 2, 2, 1, 1, 1, 1:
while True:
ship = [(randint(0, N - 1), randint(0, N - 1))]
for _ in range(1, size):
ship.append(choice([(i, j) for y, x in ship for i, j in (
(y - 1, x), (y, x - 1), (y, x + 1), (y + 1, x)
) if 0 <= i < N > j >= 0 and (i, j) not in ship]))
if not neighbours(ship) & field.keys():
break
field.update(dict.fromkeys(ship, ship))
fleet = set(field)
for step in range(1, 51): # ограничимся 50ю ходами
print(' 0 1 2 3 4 5 6 7 8 9 \n ┌─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┐')
for ch, row in zip(abc, sea_map):
print(ch, '┤', *row, '├', ch)
print(' └─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┘\n 0 1 2 3 4 5 6 7 8 9')
s = input(f'{step:>2} Ваш ход: ')
try:
y, x = abc.index(s[0]), digits.index(s[1])
ship, row = field.get((y, x), ), sea_map[y]
if ship:
del field[y, x]
row[x] = '*'
print(s, 'Попал\n' if ship & field.keys() else 'Убил\n')
if not field:
print('Победа!')
break
else:
if row[x] == ' ':
row[x] = str(len(fleet & neighbours([(y, x)])))
print(s, 'Мимо\n')
except:
print('Ожидался ход в формате \'a0\', но что-то пошло не так...\n')
else:
print(f'В этот раз не вышло, в строю осталось {len(field)} палуб '
f'на {len({id(ship) for ship in field.values()})} кораблях.')
В общем, мне нужен способ отправить мне уведомление, если боты не авторизовались в ВК до 7 утра.Я думаю выглядеть это будет примерно так:
import re
def get_substrings(string):
"""Функция разбивки на слова"""
return re.split('\W+', string)
def get_distance(s1, s2):
"""Расстояние Дамерау-Левенштейна"""
d, len_s1, len_s2 = {}, len(s1), len(s2)
for i in range(-1, len_s1 + 1):
d[(i, -1)] = i + 1
for j in range(-1, len_s2 + 1):
d[(-1, j)] = j + 1
for i in range(len_s1):
for j in range(len_s2):
if s1[i] == s2[j]:
cost = 0
else:
cost = 1
d[(i, j)] = min(
d[(i - 1, j)] + 1,
d[(i, j - 1)] + 1,
d[(i - 1, j - 1)] + cost)
if i and j and s1[i] == s2[j - 1] and s1[i - 1] == s2[j]:
d[(i, j)] = min(d[(i, j)], d[i - 2, j - 2] + cost)
return(d[len_s1 - 1, len_s2 - 1])
def check_substring(search_request, original_text, max_distance):
"""Проверка нечёткого вхождения одного набора слов в другой"""
substring_list_1 = get_substrings(search_request)
substring_list_2 = get_substrings(original_text)
not_found_count = len(substring_list_1)
for substring_1 in substring_list_1:
for substring_2 in substring_list_2:
if get_distance(substring_1, substring_2) <= max_distance:
not_found_count -= 1
if not not_found_count:
return True
search_request = 'трубок использовали для прожигания'
original_text = 'трубок использовали для прожигания стальковша.Замена воронки 18м 8сл. Разлита полностью'
result = check_substring(search_request, original_text, max_distance=2)
print(result) # True если найдено, иначе None
import math
import os
INPUT_FILE = 'input.txt'
OUTPUT_FILE = 'output.txt'
NUMBER_THRESHOLD = 1000
if __name__ == '__main__':
if not os.path.exists(INPUT_FILE) or not os.path.isfile(INPUT_FILE):
raise FileNotFoundError
with open('input.txt') as file:
text = file.read()
if not text:
raise ValueError('File is empty')
try:
a, b, c, *_ = [int(n) for n in text.strip().split(" ") if n.isdigit() and int(n) < NUMBER_THRESHOLD]
except ValueError:
raise ValueError('Wrong input data')
out = ""
if not (a < b + c and b < a + c and c < a + b):
out = "-1"
else:
p = 0.5 * (a + b + c)
h = 2 * math.sqrt(p * (p - a) * (p - b) * (p - c)) / a
out = f'{str(a + b + c)} {("%.5f" % (a * h / 2))}'
with open(OUTPUT_FILE, 'w') as file:
file.write(out)