Radiant
Silence
offline
Опыт:
4,907Активность: |
[Task] Нахождение лидера
Задача решена, Toadcop +180 ед. опыта.
» Его вариант решения задачи Код:
Постановка задачи Я тут видел, что раньше устраивали подобные "конкурсы" (Пример) и решил устроить свой. Задачанаписать максимально оптимальный алгоритм нахождения игрока с наибольшем значением убийств. ПодробнееК примеру у нас есть 12 игроков. Есть глобалка с массивом udg_kills, которая содержит значения их убийств. Нужно создать функцию, которая возвратит номер игрока, лидируещего по значению убийств(Если такого нет, то возвратит -1)» Пример Код:
ПравилаОптимальность не только в производительности, но и в количестве букв, такчто использовать циклы не запрещается. Также можно использовать дополнительные функции.Естественно я уже написал такой алгоритм. Просто интересно может ли ктонибудь сделать это лучше чем я и как он это сделает. Задание не сложное, интересное, надеюсь понравится...(может даже пригодится комунибудь) Отредактировано ShadoW DaemoN, 06.08.2008 в 00:08. |
08.07.2008, 19:17 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
Radiant, в примере у тебя отсутствует set в присвоениях, наверно, очень топорился... Свое решение можно скинуть в админ таг и не париться.
Также было бы неплохо написать, как дб оформлена функция, что-то вроде: Код:
убер простая задача... я затратил на решение менее 5 минут |
08.07.2008, 20:41 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
всё относительно. по настоящему задачя неправильно поставлена...
сейчас объясню почему =) 1) есть ограничение. 12 игроков (да хоть 8000 впринцыпе.) 2) ЕСЛИ фичя заключаетьса в быстром доступе к инфе то делаетьса по иному. вот так Код:
т.е. всё сразу происходит когда добавляеш киллы. а потом надо прочитать тока переменую если она -1 то вообще не укого нету киллов. а иначе всегда потом будет лидер. т.е. max_killz_lead - id ледирующего игрока. killz[max_killz_lead] - фраги лидирующего игрока. // если нету фрагов то будет идти значение с 0ля. но вообщем это ничего не меняет. если вы решали задачю НЕ таким способом вы тогда все уже проиграли :Р |
08.07.2008, 22:24 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
4go10_frank
offline
Опыт:
2,089Активность: |
Toadcop, браво :)
но можно вопрос, вместо "с" не проще поставить 1 и убрать takes integer c, ведь по идее каждое убийство дает +1 очко (во всех АоСах), и так у нас будет на один параметр меньше :) |
08.07.2008, 23:29 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
4go10_frank и что это изменит ? то что ничего а тока сделает возможность добавлять n килов.
твоё замечание неочём. это замечание "псевдо задротизма" который реально не знает в чём заключаетьса ключевой момент сбережения произодительности. вот я тока что пример привёл о чём я. О том что главное не как написан алгоритм а как он построен. "оптимизировать" потом елементарно можно если основа хорошая. |
08.07.2008, 23:39 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
dk
offline
Опыт:
60,293Активность: |
Задачка так себе, в стандарте просто массив отсортировать и фсе...
//Toadcop не придусмотренно только то, что если игроки сравняются по киллам, то max_killz_lead должно стать -1 (покрайней мере я так понимаю)... А вобще, конечно, изначально грамотная система лучше чем крутая и оптимальная функция) |
09.07.2008, 07:03 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Лось
offline
Опыт:
7,223Активность: |
Radiant тот код который я тебе послал в ПМ был с ошибкой, вот робочий:
Код:
|
09.07.2008, 10:46 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
dk с ровно таким же успехом можно хранить "преведущего лидера" или делать сравнения по ровным условиям и,и,и,и... т.е. это всё не важно.
омг 2ойные цыклы О_о. я привёл классный пример ^_^ в чём заключаетьса смысл програмирования. |
09.07.2008, 13:09 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Код:
^_^ |
09.07.2008, 13:19 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
ScorpioT1000 это герои. + ты пробывал или во время игры это "доступный" параметр ? // а не тока в конце игры (хотя это не совсем логично но кто знает...)
|
09.07.2008, 13:24 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Вот и я про то раз в гуи ее разрешают значит она работает(а почему она должна не работать?), ну ты замени второй аргумент на войска будут войска
ScorpioT1000 добавил: т.е. близзы уже за вас сделали(там даже лидер вроде есть) |
09.07.2008, 13:54 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
S
offline
Опыт:
43,833Активность: |
Код:
|
09.07.2008, 14:17 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
!!! есть ньюанс =) о засчитывание киллов тока когда герой убил когото (напр). т.е. это просто но не решение всех задачь. |
09.07.2008, 16:45 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Radiant
Silence
offline
Опыт:
4,907Активность: |
Лось, тоже самое что и у меня(Я не говорю что ты списал код, который прислал я XD)
Код:
Так или иначе метод Toadcop-а рулит... А метод Skorp-а нужно еще проверить ^^ |
09.07.2008, 17:29 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
S
offline
Опыт:
43,833Активность: |
Цитата:
с тебя 180 опыта для Toadcop'a xD Цитата:
нафига это? оО Может, комп (АИ) тоже может стать лидером =\ |
||
09.07.2008, 17:32 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Radiant
Silence
offline
Опыт:
4,907Активность: |
Sasha, в карте где я использую(использовал) сие была проверка на компа, просто я показал, что здесь должна быть проверка на играбельность игрока...
Цитата:
Забирайте мне не жалко, хотя такого уговора небыло ^^ |
|
09.07.2008, 17:35 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
задача очень легкая, ну на 20-ку опыта потянет...
о ужас, двойные циклы... O_O если уж и делать проверку через цикл (а не при изменении результата как предложил тоадкопик), то делать так Код:
и ненадо больше такие задачи постить, нужно чтото поинтереснее Отредактировано Jon, 09.07.2008 в 18:01. |
09.07.2008, 17:53 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
А, кстати, я же не запостил свой вариант ^^
Код:
Toadcop, возьми с полки печеньку) |
09.07.2008, 17:55 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
рофл! задача типа найти адрес элемента массива с максимальным значением?! О_о, тянет даже на 10 опыта=))) (т.е. все кто предложил какой то вариант в посте - выигравают!)
аххаха) |
09.07.2008, 18:27 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
S
offline
Опыт:
43,833Активность: |
Цитата:
был, можем попросить супмодеров поднять логи редактирования ^^ Цитата:
кстати... даешь еще конкурсЪ |
||
09.07.2008, 18:42 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|