Форум сайта python.su
Ко всем посетителям форума огромнейшая просьба - накидайте пожалуйста тестовых заданий для junior python developer.
Возможно у кого-то есть какие-то мелкие задачи до которых постоянно недоходят руки - может смогу помочь :)
На досуге хочу поигратся и повыполнять всяко разно :)
Спасибо.
Офлайн
Проект Эйлер - наиграешься )
Офлайн
из того, что мне попадалось
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.во 2м задании надо получить все комбинации
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
Офлайн
спасибо.
буду тренироваться )
Офлайн
Да, спасибо.
Кстати, может из этого сделать “приклеенную” тему? Конечно, мне неизвестно, насколько это интересно всем, но по-моему минимум 3-м.
)
В любом случае, спасибо.
Отредактировано (Сен. 13, 2009 20:29:04)
Офлайн
И от меня спасибо.
Второе задание от slav0nic'а думал думал. Сделал аж в 14 строк (правда сами строки не влазят в рекомендуемое количество символов) за 44 минуты. Еще время есть подумать. Но видать мои проблемы чисто фундаментальные.
ред… 5 строк :)
ред2… и всётаки это издевательство. Лучше в 16 но красиво.
Отредактировано (Сен. 13, 2009 19:28:04)
Офлайн
Вопрос по проекту Эйлера. (задание 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)
Офлайн
Жесть ты написал. Я не помню, как делал в первый раз, сейчас заново решил задачу, мой метод не самый быстрый, поскольку он ищет все возможные палиндромы, но он уместился в 6 строк. И если у тебя есть ответ и ты совсем отчаялся, то впиши его и почитай решения там на форуме.
Могу свой показать, если надо, он до безобразия прост.
Офлайн
поскольку
pasaranaxто буду думать дальше, но когда(если) решу, то обязательно потом попрошу показать ваше мини-решение :)
он ищет все возможные палиндромы, но он уместился в 6 строк
Офлайн
Получил в среднем 28 мс на своем стареньком ноутбуке. Около пятнадцати строк.
Проверку на полиномность реализовал отдельной функцией для наглядности. Сделал перебором (если это можно назвать перебором) но в большинстве случаев проверка на полиномность не выполняется.
Выполняется 8471 итерация кода получения полинома.
Отредактировано (Сен. 27, 2009 01:23:02)
Офлайн