|
Форумные конкурсы Конкурсы под эгидой форума |
19.02.2007, 14:34
|
#1
|
scientist.alien
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений (для 2,593 пользователей)
|
Простенький программерский конкурс...
Предлагаю сделать серию простеньких форумных конкурсов.
Как вариант начала серии предлагаю вот такой конкурс:
Конкурс на самую оригинальную функцию toggle'a переменной (0/1).
Начальнай вариант:
Function toggle(a)
a=1-a
end function
Можно сделать данный конкурс турнирным - лучшие 50 проходят во второй тур, оттуда лучшие 10 - в третий и т.д.
В качестве приза предлагаю либо медаль, либо награду "За оригинальность"
Ну, кто хочет подобную серию?
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab. We LOVE you. We MADE you.
|
(Offline)
|
|
19.02.2007, 15:54
|
#2
|
|
Re: Простенький программерский конкурс...
Ize'g0re
такую toggle придумали уже давно
в бейсиках ето not ... типа a = not a
а в С++ ето "!" .. a = !a;
|
|
|
19.02.2007, 17:55
|
#3
|
Дэвелопер
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений (для 110 пользователей)
|
Re: Простенький программерский конкурс...
Ize'g0re
Дай Бог, чтобы хоть один, кроме твоего, приудумали, а ты про 50 говоришь)
|
(Offline)
|
|
19.02.2007, 19:38
|
#4
|
Знающий
Регистрация: 05.01.2007
Сообщений: 229
Написано 5 полезных сообщений (для 3 пользователей)
|
Re: Простенький программерский конкурс...
Мда.. задачка не оригинальна.
может лучше предложить знак float/real/double/что-там-у-вас поменять ручками.
Мне пришлось однажды.. когда из-за неявных преобразования на выходе из функции я получал float с потеряным знаком..
|
(Offline)
|
|
20.02.2007, 01:57
|
#5
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Простенький программерский конкурс...
a xor $1000000000000000
|
(Offline)
|
|
21.02.2007, 02:29
|
#6
|
Знающий
Регистрация: 05.01.2007
Сообщений: 229
Написано 5 полезных сообщений (для 3 пользователей)
|
Re: Простенький программерский конкурс...
Да-да, я так и сделал.. я вспомнил.. попутно с этим я еще пытался вручную делить float на степень двойки...вот это уже задача поинтереснее.
кстати предложение Диплоимата еще ия вляется решением по конкурсу..
a=a xor 1
так как в компьютерах нет узла, вы полняющего операцию XOR, она заменима несколькими стандартными (И,ИЛИ,НЕ) - это к Имперсоналису
|
(Offline)
|
|
21.02.2007, 10:51
|
#7
|
|
Re: Простенький программерский конкурс...
Serendipity
xor ето самая быстрая операция, и по скорости она сравнима с И,ИЛИ,НЕ
узел есть в ALU
просто раньше ... a = a xor a был самый быстрый способ обнулить переменую
помойму даже в асемблере щиталось что сделать xor быстрее чем присвоить ноль
ps. дело в том что ALU обычно имеет частоту больше чем сам процессор
и даже если для операции требуется на 3 такта больше .. то разницы для программы как таковой нету
хотя в разных процесорах по разному
|
|
|
21.02.2007, 13:50
|
#8
|
scientist.alien
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений (для 2,593 пользователей)
|
Re: Простенький программерский конкурс...
я вообщето имел в виду ЛЮБУЮ ОРИГИНАЛЬНУЮ идею... можно даже через If Endif делать, да мало ли через какой ещё геморрой! главный и единственный критерий - ОРИГИНАЛЬНОСТЬ! скорость, доступность, прочиеусловия не учитываются...
Ну, кто ещё хочет предложить вариант тоггла?
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab. We LOVE you. We MADE you.
|
(Offline)
|
|
21.02.2007, 15:53
|
#9
|
|
Re: Простенький программерский конкурс...
Ну, допустим, вот:
Procedure Toggle(a)
ProcedureReturn (A + 1) % 2
EndProcedure
|
|
|
21.02.2007, 18:29
|
#10
|
|
Re: Простенький программерский конкурс...
Все, ребята, встречайте победителя ...
#MemorySize = 2 - 1
Global Dim Memory.B(#MemorySize)
Procedure Interpret(Buffer.S)
Define I, Ptr, Mode, Level, *EndAddress = @Buffer + Len(Buffer) - 1
Enumeration
#Normal : #Skip : #ReverseSkip
EndEnumeration
For I = @Buffer To *EndAddress
Select PeekB(I)
Case '+' : If Mode = #Normal : Memory(Ptr) + 1 : EndIf
Case '-' : If Mode = #Normal : Memory(Ptr) - 1 : EndIf
Case '>' : If Mode = #Normal : Ptr + 1
If Ptr > #MemorySize : Ptr = 0 : EndIf
EndIf
Case '<' : If Mode = #Normal : Ptr - 1
If Ptr < 0 : Ptr = #MemorySize : EndIf
EndIf
Case '[' : Select Mode
Case #Normal : If Memory(Ptr) = 0 : Mode = #Skip : EndIf
Case #Skip : Level + 1
Case #ReverseSkip
If Level = 0 : Mode = #Normal : Else : Level - 1 : EndIf
EndSelect
Case ']' : Select Mode
Case #Normal : If Memory(Ptr) <> 0 : Mode = #ReverseSkip : EndIf
Case #Skip
If Level = 0 : Mode = #Normal : Else : Level - 1 : EndIf
Case #ReverseSkip : Level + 1
EndSelect
EndSelect
If Mode = #ReverseSkip
If I = *Buffer : Break : Else : I - 2 : EndIf
EndIf
Next I
EndProcedure
; -=-=-=-=-=-=-=-=-=-=-=-=-
Procedure Toggle(A)
Memory(0) = A
Interpret(">[-]<[[-]>]+")
ProcedureReturn Memory(0)
EndProcedure
P.S. Пока писала эту хрень, в голове родился еще один вариантик (поскромнее, конечно =)) ...
: Toggle
>R 0 1 R>
IF DROP ELSE NIP THEN
;
|
|
|
21.02.2007, 18:40
|
#11
|
Дэвелопер
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений (для 110 пользователей)
|
Re: Простенький программерский конкурс...
Brainf**k) Да, его сложно переплюнуть.
|
(Offline)
|
|
21.02.2007, 18:47
|
#12
|
|
Re: Простенький программерский конкурс...
Да, его сложно переплюнуть.
|
Хех, сложно но можно =). Про Malbolge слышал ?
|
|
|
22.02.2007, 13:40
|
#13
|
scientist.alien
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений (для 2,593 пользователей)
|
Re: Простенький программерский конкурс...
А, пардон, на каком языке это писалось?(я с математикой практически не знаком, так что идентифицировать команды не смог...)
Я кроме select case ничего знакомого не увидел...
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab. We LOVE you. We MADE you.
|
(Offline)
|
|
22.02.2007, 14:06
|
#14
|
|
Re: Простенький программерский конкурс...
А, пардон, на каком языке это писалось?(я с математикой практически не знаком, так что идентифицировать команды не смог...)
Я кроме select case ничего знакомого не увидел...
|
Первые 2 - PureBASIC v4.0
Последняя - Win32FORTH v6.11.10
|
|
|
23.02.2007, 01:15
|
#15
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Простенький программерский конкурс...
2Jimon
ИМХО:
a=a xor a , врядли будет работать быстрее чем a=0, т.к. в любрм соучае идет присваивание, а вто обнуление регистра процессора, типа
XOR EAX , будет наверняка быстрее чем любоке присваивание переменной ему.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:19.
|