Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 23:23 12.07.25 
Компютри и Интернет
   >> Програмисти
*Кратък преглед

Тема Python в олимпиада по информатика, задача Б - T9нови  
Автор eфp. Лyk (*)
Публикувано22.05.06 19:11



Здравейте,

Пиша тази тема с цел да пропагандирам Python като език с удивителни възможности за решаване на задачи от най-различни области.

В случая ще го направя на гърба на една от задачите по информатика за студенти. Ето условието на задача В за имплементиране на ограничен T9:



Следва решение в 35 реда на Python:


from sys import stdin
# simple data for reverse maping of words to strokes
map_key = {" ":1, "A":2, "B":2, "C":2, "D":3, "E":3, "F":3, "G":4, "H":4, "I":4,
"J":5, "K":5, "L":5, "M":6, "N":6, "O":6, "P":7, "Q":7, "R":7, "S":7,
"T":8, "U":8, "V":8, "W":9, "X":9, "Y":9, "Z":9};

def get_next(convert = lambda x: x): # the default convertion is no convertion
return convert( stdin.readline().strip() )

def find_word (clicks): # the main search function
if(clicks) :
if( g_dict.has_key( clicks )):
return g_dict[ clicks ]
else:
return find_word(clicks[:-1]) # try smaller word recursively
else:
return "*"

for test_number in range (get_next(int)):
g_dict = {"1": " "} # store all words and start with 'space' for 1

lx = [ get_next() for i in range (get_next(int))]
lx.reverse() # reverse word list to have lexical sort in dictionary

for word in lx: # load words to dictionary, sequence of strokes is the key
g_dict[ "".join([ str(map_key[e]) for e in word]) ] = word

useless = get_next() #useless number of clicks, throw it away

clicks = "".join( get_next().split() ) # load as string, throw spaces
print
while(clicks ):
word = find_word(clicks)
print word, # pretty printing
clicks = clicks[len(word):] # slice and try the rest


Поздрави,
Лук

Редактирано от eфp. Лyk на 22.05.06 20:24.



Тема Re: Python в олимпиада по информатика, задача Б - T9нови [re: eфp. Лyk]  
Авторasan (Нерегистриран)
Публикувано25.05.06 00:00



Тоя python дразни...



Тема Re: Python в олимпиада по информатика, задача Б - T9нови [re: asan]  
Автор Гypy (mr. pink)
Публикувано25.05.06 01:24



Питоня не е много зле. Още малко и да се барне тук там, и може да стане по-добър от Джаваскрипт и Руби на Релси.

--
Increasing Performance By Lowering Expectations.


Тема Re: Python в олимпиада по информатика, задача Б - [re: Гypy]  
Автор Щ (малката ограда)
Публикувано25.05.06 11:05



Искаш да бараш питона?




*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.