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

Спасибо.
pasaranax
Проект Эйлер - наиграешься )
slav0nic
из того, что мне попадалось
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 - обсуждался на форуме
pochechyev
спасибо.
буду тренироваться )
FILLIPO
Да, спасибо.

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

)

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

ред… 5 строк :)
ред2… и всётаки это издевательство. Лучше в 16 но красиво.
FILLIPO
Вопрос по проекту Эйлера. (задание 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)
ответник проекта Эйлера другой. Как я пропустил нужный палиндром?
pasaranax
Жесть ты написал. Я не помню, как делал в первый раз, сейчас заново решил задачу, мой метод не самый быстрый, поскольку он ищет все возможные палиндромы, но он уместился в 6 строк. И если у тебя есть ответ и ты совсем отчаялся, то впиши его и почитай решения там на форуме.
Могу свой показать, если надо, он до безобразия прост.
FILLIPO
поскольку

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

Выполняется 8471 итерация кода получения полинома.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB