Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 6, 2009 18:14:55

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

тестовые задачи

Ко всем посетителям форума огромнейшая просьба - накидайте пожалуйста тестовых заданий для junior python developer.
Возможно у кого-то есть какие-то мелкие задачи до которых постоянно недоходят руки - может смогу помочь :)
На досуге хочу поигратся и повыполнять всяко разно :)

Спасибо.



Офлайн

#2 Сен. 6, 2009 21:09:46

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

тестовые задачи

Проект Эйлер - наиграешься )



Офлайн

#3 Сен. 6, 2009 22:05:55

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

тестовые задачи

из того, что мне попадалось

Please do all the tests below. The tests should be returned as individual Python files that run on Python 2.5, do not use any modules other than the standard library.


Test 1)

A machine generates sequences of numbers where each number is a constant value greater than the previous. A fault in the machine has caused a single number in each sequence to be omitted. Write a function that accepts the sequence (as a list of numbers) and returns the missing value.

For example:

Input:
Output: 13
Given an n-digit phone number, produce all sequences of words that will “spell” the phone number, where each word is two or more characters. For example, 346-3253 spells FIND-ALE. You can ignore “-“ in the phone number. Also, assume the phone number doesn’t have any one’s or 0’s. Use the helper functions isWord and numToLetter. Hint: you should able to do this in very few lines of code.

Primary consideration is given to code that produces the correct output, followed by code that is short and elegant.

Please return results at 90 minutes or earlier. If you would like to work on the exercise longer than that, then please return additional results when it is working to your satisfaction.

Code should work in python 2.6.2. with no included libraries


# *****************


# print all the words that spell the numbers in the string of digits phoneStrong
printWords(phoneString)


def isWord(word):
return word in set()

def numToLetter(numString):
d = { ‘0’:,
‘1’:,
‘2’:,
‘3’:,
‘4’:,
‘5’:,
‘6’:,
‘7’:,
‘8’:,
‘9’: }
return d
во 2м задании надо получить все комбинации

+ http://spoj.pl - обсуждался на форуме

Офлайн

#4 Сен. 7, 2009 00:19:59

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

тестовые задачи

спасибо.
буду тренироваться )



Офлайн

#5 Сен. 13, 2009 10:31:21

FILLIPO
От:
Зарегистрирован: 2009-05-03
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

тестовые задачи

Да, спасибо.

Кстати, может из этого сделать “приклеенную” тему? Конечно, мне неизвестно, насколько это интересно всем, но по-моему минимум 3-м.

)

В любом случае, спасибо.



Отредактировано (Сен. 13, 2009 20:29:04)

Офлайн

#6 Сен. 13, 2009 14:36:22

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

тестовые задачи

И от меня спасибо.
Второе задание от slav0nic'а думал думал. Сделал аж в 14 строк (правда сами строки не влазят в рекомендуемое количество символов) за 44 минуты. Еще время есть подумать. Но видать мои проблемы чисто фундаментальные.

ред… 5 строк :)
ред2… и всётаки это издевательство. Лучше в 16 но красиво.



Отредактировано (Сен. 13, 2009 19:28:04)

Офлайн

#7 Сен. 26, 2009 10:53:49

FILLIPO
От:
Зарегистрирован: 2009-05-03
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

тестовые задачи

Вопрос по проекту Эйлера. (задание 4)

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.

Find the largest palindrome made from the product of two 3-digit numbers.

Я не уверен, можно ли это вешать сюда, но просто поток моих идей для задачи иссяк. Помогите найти ошибку и вообще оцените работу. pasaranax, pochechyev или Griffon, если вы это решали и у Вас был другой, совсем другой подход к задаче (просто у меня - перебор вариантов), то скажите хотя бы, о чем подумать.

Программа упорно выводит, что ответом к вышеприведенной задаче является палиндром 749947 = 863 * 869

>>> def prime_factors_of_n(n):
k = 2
prime_factors = []
while n != 1 or n >= k:
x = n % k
if x == 0:
prime_factors.append(k)
n = n / k
else:
k += 1
for digit in prime_factors:
z = k % digit
if z == 0:
k += 1
else:
pass
return prime_factors

>>> palindrome = 999999
>>> result = prime_factors_of_n(palindrome)
>>> l = 1
>>> a = 0
>>> b = 0
>>> while a == 0 and b == 0:
while l <= len(result): # counting multiples
current_right_result = result[l:]
current_left_result = result[:l]
mult1 = 1
mult2 = 1
for i in current_right_result:
mult1 = mult1 * i
for i in current_left_result:
mult2 = mult2 * i
mult1 = str(mult1)
mult2 = str(mult2)
if len(mult1) == 3 and len(mult2) == 3:
a = int(mult1)
b = int(mult2)
l = len(result)
break
else:
l += 1
if a != 0 and b != 0:
break
else: # reduce palindrome
l = 1
palindrome = str(palindrome)
palindrome = list(palindrome)
index = -len(palindrome)
while index != 0:
for i in palindrome:
palindrome[index] = int(palindrome[index])
index += 1
if len(palindrome) == 6:
if palindrome[2] != 0:
print palindrome
palindrome[2] = palindrome[2] - 1
palindrome[3] = palindrome[3] - 1
elif palindrome[2] == 0 and palindrome[1] != 0:
print palindrome
palindrome[2] = 9
palindrome[3] = 9
palindrome[1] = palindrome[1] - 1
palindrome[4] = palindrome[4] - 1
else:
print palindrome
palindrome[2] = 9
palindrome[3] = 9
palindrome[1] = 9
palindrome[4] = 9
palindrome[0] = palindrome[0] - 1
palindrome[5] = palindrome[5] - 1
else:
print "Having a 5 digit palindrome!(Havin BIG problems)"
# making a new palindrome
index = -len(palindrome)
while index != 0:
for i in palindrome:
palindrome[index] = str(palindrome[index])
index += 1
new_palindrome = ""
for i in palindrome:
new_palindrome += i
palindrome = int(new_palindrome)
result = prime_factors_of_n(palindrome)
ответник проекта Эйлера другой. Как я пропустил нужный палиндром?



Отредактировано (Сен. 26, 2009 10:56:40)

Офлайн

#8 Сен. 26, 2009 15:21:10

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

тестовые задачи

Жесть ты написал. Я не помню, как делал в первый раз, сейчас заново решил задачу, мой метод не самый быстрый, поскольку он ищет все возможные палиндромы, но он уместился в 6 строк. И если у тебя есть ответ и ты совсем отчаялся, то впиши его и почитай решения там на форуме.
Могу свой показать, если надо, он до безобразия прост.



Офлайн

#9 Сен. 26, 2009 19:27:11

FILLIPO
От:
Зарегистрирован: 2009-05-03
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

тестовые задачи

поскольку

pasaranax
он ищет все возможные палиндромы, но он уместился в 6 строк
то буду думать дальше, но когда(если) решу, то обязательно потом попрошу показать ваше мини-решение :)



Офлайн

#10 Сен. 26, 2009 22:15:20

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

тестовые задачи

Получил в среднем 28 мс на своем стареньком ноутбуке. Около пятнадцати строк.
Проверку на полиномность реализовал отдельной функцией для наглядности. Сделал перебором (если это можно назвать перебором) но в большинстве случаев проверка на полиномность не выполняется.

Выполняется 8471 итерация кода получения полинома.



Отредактировано (Сен. 27, 2009 01:23:02)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version