Mykola
У мене до вас є трохи дивна питання.
Mykola
В пайтоні компілятор читає рядки по порядку чи ні?
Igor
SELECT UserName,
BookName,
MAX(Date)
FROM table
GROUP BY UserName
ORDER BY UserName;
create table t (username varchar(100), bookname varchar(100), date date);
insert into scientist (username, bookname, date) values ('igor', 'albert', '2001-02-01');
insert into scientist (username, bookname, date) values ('igor', 'isaac', '2001-02-03');
insert into scientist (username, bookname, date) values ('igor', 'marie', '2001-02-04');
SELECT UserName,
BookName,
MAX(Date)
FROM t
GROUP BY UserName
ORDER BY UserName;
да постгре роняет ошибку
column "t.bookname" must appear in the GROUP BY clause or be used in an aggregate function
Igor
постановка по каждому юзеру выбрать последнюю книгу которую он прочел даты все разные для каждого юзера
Igor
пускаю тут
https://extendsclass.com/postgresql-online.html
Igor
Igor
по вашему запросу тоже падает ошибка скрин выше
Igor
Igor
смотря что вы имете ввиду под словами читает по порядку :)
Alexander
если у строки в конце 2 пробела то падает ошибка :)
print (solve('a '))
def solve(s):
forwar_index = 0
backward_index = len(s) - 1
result = ''
while forwar_index < len(s) or backward_index >= 0:
if s[backward_index] == ' ':
backward_index -= 1
continue
if s[forwar_index] != ' ':
result += s[backward_index]
backward_index -= 1
else:
result += ' '
forwar_index += 1
return result
фанзиль
Всем привет) есть в группе менторы? ( по js) Если есть напишите в личку пожалуйста)
Igor
Alexander
Alexander
Alexander
Igor
то что вы написали это си++ :)
Igor
ну и чтобы ваше решение было не квадратичным нужно result делать списком и в конце делать return ''.join(result) тогда будет линия
Alexander
Igor
и да в таких мелких задачах это не важно но на собесе когда возникает вопрос о сложности обычно оценивают не правильно
Alexander
Но опять же, я же мидл, чтоб такие вещи учитывать. Я только учусь.
Igor
я только обращаю внимание на нюансы ни на что не претендую каждый может писать код как ему нравится :)
Alexander
Здесь заведомо маленькие тесты, о памяти можно не беспокоиться.
Alexander
Вот там была задача на скорость и оптимизацию кода. Я попотел знатно
Igor
здесь не было ограничения :) как в олимпиадном программировании откуда вы знаете что они маленькие? :)
Алексей
Igor
Igor
сегодня не ваш день
Igor
def solve(s):
forwar_index = 0
backward_index = len(s) - 1
result = ''
while forwar_index < len(s) or backward_index >= 0:
if s[backward_index] == ' ':
backward_index -= 1
continue
if s[forwar_index] != ' ':
result += s[backward_index]
backward_index -= 1
else:
result += ' '
forwar_index += 1
return result
solve(' '*10)
Igor
wwwcpsszxmm6
Igor
чем он противоречит постановке?
Адъютант
Адъютант
найс срач, ждем конца и запоминаем лучшее решение GAN сетей
Адъютант
шучу
Адъютант
пойду дальше opencv допиливать
Alexander
сегодня не ваш день
def solve(s):
forward_index = 0
backward_index = len(s) - 1
result = ''
while forward_index < len(s) or backward_index >= 0:
if s[backward_index] == ' ' and backward_index >=0:
backward_index -= 1
continue
if s[forward_index] != ' ':
result += s[backward_index]
backward_index -= 1
else:
result += ' '
forward_index += 1
return result
print('"' + solve(' '*10) +'"')
Alexander
чем он противоречит постановке?
вот здесь с джойном:
def solve(s):
forward_index = 0
backward_index = len(s) - 1
result = []
while forward_index < len(s) or backward_index >= 0:
if s[backward_index] == ' ' and backward_index >=0:
backward_index -= 1
continue
if s[forward_index] != ' ':
result.append(s[backward_index])
backward_index -= 1
else:
result.append(' ')
forward_index += 1
return ''.join(result)
print('"' + solve(' '*10) +'"')
Igor
еще раз вся проблема в том что вы пытаетесь засунуть два цикла в один отсюда у вас такое множество условий на самом деле вы делаете вот это
def solve(s):
forward_index = 0
backward_index = -1
result = ''
while forward_index < len(s):
if s[forward_index] != ' ':
while s[backward_index] == ' ':
backward_index -= 1
result += s[backward_index]
backward_index -= 1
else:
result += ' '
forward_index += 1
return result
Igor
отдельно цикл по forward и отдельно по back
Igor
а у вас все в одной куче
Igor
да len(s) - n это просто отрицательные индекс -n
Alexander
Ну скажем так: вы поставили себе цель меня завалить и завалили. Поздравляю!
Артур
Igor
Артур
Igor
вот очень популярная либа paramiko
они "пытались" написать buffered_file
Igor
Igor
и тут на одном экране сразу две проблемы
Igor
result+= new_data
Igor
это квадрат по памяти при скачивании файла
Igor
на мелких пофиг на больших уже не так пофиг
Igor
и второй self._read(self._DEFAULT_BUFFERSIZE)
Igor
всегда используется дефолтный размер буффеа а не self._bufsize
Igor
те первую проблему можно бы было обойти увеличив размер буфера чтобы меньше раз делать += new_data но и тут не сложилось :)
Igor
и после того как с таким в продакшне поборишься начинаешь это видеть
Igor
и может быть сильно болезненно реагировать, но завалить желания не было :)
Alexander
Я уверен, что когда я найду работу, то под руководством такого дотошного тимлида как вы я ровно через год сдам зачёт на мидла.
Igor
все такие дотошные только на собесе :)
Адъютант
Igor
когда горят дедлайны все делают по классике хуяк хуяк и впродакшн :)
Alexander
Alexander
Alexander
Я прошел собес?
Адъютант
Alexander
Alexander
Просто мы зацепились именно за решение с индексами.
Igor
нужно не знать а использовать :)
Alexander
Igor
замнем для ясности свое видение решения с индексами я тоже выложил :)
Alexander
Давайте на компрехеншны задачу.
Igor
мы обычно их в задаче добавляем :) так отдельно у мну нет
Alexander
Вы же можете посмотреть мои решения на кодварсе.
Alexander
https://www.codewars.com/users/Nuu44a
Alexander
def decodeMorse(morse_code):
# ToDo: Accept dots, dashes and spaces, return human-readable message
# загоняем морязнку
alpha = '''.- A
-... B
-.-. C
-.. D
. E
..-. F
--. G
.... H
.. I
.--- J
-.- K
.-.. L
-- M
-. N
--- O
.--. P
--.- Q
.-. R
... S
- T
..- U
...- V
.-- W
-..- X
-.-- Y
--.. Z
----- 0
.---- 1
..--- 2
...-- 3
....- 4
..... 5
-.... 6
--... 7
---.. 8
----. 9
.-.-.- .
--..-- ,
..--.. ?
.----. '
-.-.-- !
-..-. /
-.--. (
-.--.- )
.-... &
---... =>
-.-.-. ;
-...- =
.-.-. +
-....- -
..--.- _
.-..-. "
...-..- $
.--.-. @
...---... SOS'''
# делаем словарь
alpha = alpha.split('\n')
alpha = [x.split() for x in alpha]
alphabet = dict()
alphabet = {x[0]: x[1] for x in alpha}
alphabet['~'] = ' '
# Принимаем на ввод морзянку и печатаем нормальными буквами
return (''.join([alphabet[x] for x in morse_code.strip(' ').replace(' ', ' ~ ').split()]))