Бағдарламалау үйірмесі мектеп турнирі үшін бағдарлама әзірлеп жатыр. Қатысушылардың нәтижелері results.txt мәтіндік файлында сақталады, әр қатысушыға бір жол, пішімі «Тегі;сынып;ұпай», мысалы «Ахметов;9;72». Жол «;» таңбасы бойынша бөліктерге бөлінеді. len функциясы жолдағы барлық таңбалардың, соның ішінде «;» таңбасының да санын қайтарады. Файлда алты жазба бар: «Ахметов;9;72», «Беков;10;85», «Ким;9;85», «Сулейменова;11;64», «Дюсенов;10;90», «Омарова;9;58». Қатысушыларды ретке келтіру үшін ұпайлары бойынша кему ретімен көпіршікті сұрыптау қолданылады: өту тізімнің басынан соңына дейін бір рет орындалады, көрші элементтер кезекпен салыстырылады және солдағысы оңдағысынан кіші болса, олардың орындары ауыстырылады. Нәтиженің бақылау санын табу үшін sum_digits(n) рекурсивті функциясы қолданылады: егер n < 10 болса, нәтиже n-ге тең; әйтпесе нәтиже (n mod 10) + sum_digits(n div 10), мұндағы mod — бөлгендегі қалдық, ал div — бөлгендегі бүтін бөлік. Файлды әртүрлі режимде ашуға болады: «r» — тек оқу, «w» — жазу, бұл кезде файлдың бұрынғы мазмұны өшіріледі, «a» — файлдың соңына жазу. Турнирден кейін қатысушылар A пунктінен E пунктіне барады. A, B, C, D, E пункттері екі жақты жолдармен жалғасқан: A–B 4 км, A–C 2 км, B–C 1 км, B–D 5 км, C–D 8 км, D–E 3 км. Бағдарлама бұл жол желісін граф ретінде сақтайды: пункттер — төбелер, жолдар — ұзындығы бар қабырғалар.
Файлдағы қатысушылардың ұпайлары мынадай ретпен тұр: 72, 85, 85, 64, 90, 58. Кему ретімен көпіршікті сұрыптаудың бірінші өтуінен кейін ұпайлар қандай ретпен тұрады?
Жауап пен талдауды көрсетуЖауап пен талдауды жасыру
Дұрыс жауап
- A85, 85, 72, 90, 64, 58
Талдау
Солдан оңға қарай жүреміз. 72 < 85, ауыстырамыз: 85, 72, 85, 64, 90, 58. 72 < 85, ауыстырамыз: 85, 85, 72, 64, 90, 58. 72 > 64, ауыстырмаймыз. 64 < 90, ауыстырамыз: 85, 85, 72, 90, 64, 58. 64 > 58, ауыстырмаймыз. Бірінші өтуден кейін «85, 85, 72, 90, 64, 58» шығады. Толық сұрыпталған тізім бірнеше өтуден кейін ғана шығады.