IPB

Здравствуйте, гость ( Вход | Регистрация )

25 страниц V  « < 23 24 25  
Reply to this topicStart new topic
> Языки программирования
Guevara-chan
сообщение 14 Jan 2014, 10:16
Сообщение #481

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5911 раз




Ну, вот как-то так: http://vk.com/note104493218_12227861
О чем-то забыла ? Где-то недогнула ?


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 16 Feb 2014, 10:19 (Сообщение отредактировал Guevara-chan - 16 Feb 2014, 11:11)
Сообщение #482

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5911 раз




Min/Max без условных переходов, говорите ? OKay:

Код
Macro Def_Comparator(PName, sgn = +)
Procedure PName(Alfa, Omega)
Define Diff = Omega - Alfa, Factor = 0 sgn Sign(Diff)
ProcedureReturn Alfa +  Sign(Factor + 1) * Diff
EndProcedure
EndMacro

Def_Comparator(Max)
Def_Comparator(Min, -)

Debug Max(4, 2); 4, я полагаю.
Debug Min(7, 9); 7, я полагаю.

...Ну или так, да:

Код
Macro Def_Comparator(PName, op)
Procedure PName(Alfa, Omega)
ProcedureReturn Alfa + (-Bool(Alfa op Omega) & (Omega - Alfa))
EndProcedure
EndMacro

Def_Comparator(Max, <)
Def_Comparator(Min, >)


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 16 Feb 2014, 11:25
Сообщение #483

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3999 раз




Очень хорошо, но выделываться в именах параметров можно и без ошибок.
Цитата(Guevara-chan @ 16 Feb 2014, 09:19) *
Alfa
Alpha же.
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 16 Feb 2014, 12:24 (Сообщение отредактировал Guevara-chan - 16 Feb 2014, 12:36)
Сообщение #484

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5911 раз




Ну, вариант "Alfa" всего в полтора раза менее популярен (109 миллионов против 141).

...Бонус для тех, кто усмотрел неявные If'ы в Sign:

Код
Procedure Sign_(Val)
ProcedureReturn Bool(Val >= 0) - Bool(Val <= 0)
EndProcedure

Debug Sign_(-10); -1, надо полагать ?
Debug Sign_(0); 0, надо полагать ?
Debug Sign_(10); 1, надо полагать ?


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 16 Feb 2014, 12:36
Сообщение #485

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3999 раз




Он от этого правильнее не станет.
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 16 Feb 2014, 13:08
Сообщение #486

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3999 раз




Цитата(Guevara-chan @ 16 Feb 2014, 11:24) *
Код
Procedure Sign_(Val)
ProcedureReturn Bool(Val >= 0) - Bool(Val <= 0)
EndProcedure
Чего ж не (unsigned(~Val ^ (Val - 1)))>>(sizeof(Val)*8-1)) & ((Val & (-1))>>(sizeof(Val)*8-1)) ? Условная операция - уже половина оператора выбора.
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 16 Feb 2014, 16:31 (Сообщение отредактировал Guevara-chan - 16 Feb 2014, 19:10)
Сообщение #487

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5911 раз




Тоже верно, но что-то рука не поднялась еще раз заведомо гробить поддержку чисел с плавающей точкой. Кстати, почти в тему:
http://vk.com/topic-30666517_29011944?post=151474 - внесла посильную лепту.

P.S. Чит (NaN может трактоваться и не как 0 при переводе в целое), но работает:

Код
Procedure Sign_(Val)
ProcedureReturn Int(Val / Abs(Val))
EndProcedure

...Я, однако, предпочту все же следующее усложнение (исходим из предположения, что NaN <> 0):

Код
Procedure Sign_(Val)
Define Factor.i = Val / Abs(Val), NaN.i = NaN()
ProcedureReturn Factor % NaN
EndProcedure


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Orzie
сообщение 20 May 2014, 11:33
Сообщение #488

Reinventing the Steel
Сообщений: 7 828
Спасибо сказали: 15830 раз




Цитата(feanor @ 12 May 2014, 12:51) *
Истина - это все, что не ложь.

Цитата(feanor @ 12 May 2014, 12:51) *
И хватит казуистики.


STACK OVERFLOW


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 20 May 2014, 14:09 (Сообщение отредактировал feanor - 20 May 2014, 14:11)
Сообщение #489

laughed as one fey
Сообщений: 11 843
Спасибо сказали: 19746 раз




В первой строке задротская программистская шутка.

В С истиной действительно считается любое целочисленное значение, кроме нуля (хотя true все же равно единице). Так что истин там много, а ложь - одна.


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 20 May 2014, 16:44
Сообщение #490

Невыносимый
Сообщений: 13 983
Спасибо сказали: 26456 раз




Не только в C, но это всё ещё казуистика.


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Orzie
сообщение 20 May 2014, 16:49 (Сообщение отредактировал Orzie - 20 May 2014, 16:50)
Сообщение #491

Reinventing the Steel
Сообщений: 7 828
Спасибо сказали: 15830 раз




Цитата(feanor @ 20 May 2014, 15:09) *
В первой строке задротская программистская шутка.

В С истиной действительно считается любое целочисленное значение, кроме нуля (хотя true все же равно единице). Так что истин там много, а ложь - одна.

Да это-то всё понятно, я просто о том, что казуистика как раз и предполагает определения "Счастье есть отсутствие несчастья".


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 20 May 2014, 18:12
Сообщение #492

Мяў, наверное...
Сообщений: 21 767
Спасибо сказали: 10325 раз




Цитата(feanor @ 20 May 2014, 15:09) *
В первой строке задротская программистская шутка.

В С истиной действительно считается любое целочисленное значение, кроме нуля (хотя true все же равно единице). Так что истин там много, а ложь - одна.

В Delphi вроде тоже: Boolean(2) = True. Как бы "единица и больше" - истина. "ноль и меньше" - ложь. А вот Bool(2) - не гарантирую, что истина. Это не фактическое приведение, а особая операция.


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 20 May 2014, 19:43
Сообщение #493

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3999 раз




Так разве в делфи можно писать конструкции вида if(2)?

Позже перенесу оффтопик.
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 20 May 2014, 19:46
Сообщение #494

Мяў, наверное...
Сообщений: 21 767
Спасибо сказали: 10325 раз




Нельзя. Это прямое приведение типов.
Byte(-1) = 255.
Это не выражение на языке Delphi.
Однако
1: if 2 then goto 1;
даст бесконечный цикл.
или, красивее:
repeat until 2;


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 20 May 2014, 21:02
Сообщение #495

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3999 раз




Какое ещё приведение типов? Мы про условия говорим.
Ну да ладно, в примере у тебя и так видно, что всё так же.
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 20 May 2014, 22:02
Сообщение #496

Мяў, наверное...
Сообщений: 21 767
Спасибо сказали: 10325 раз




Ну, условие:
if Boolean(2) then ...;
только приведение к логическому типу и так подразумевается, поэтому можно написать:
if 2 then ...;
И это условие будет выполнено что в первом, что в втором случае. Потому что 2 = Boolean(2) = True (в условиях, конечно). Также как часто используемое мной выражение 2=3. Оно всегда даёт False, но оно в 100 раз нагляднее, чем само False.
(компилятор в данном случае не парится, сразу подставляя нужный результат. Так что производительность не страдает).


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 21 May 2014, 01:00
Сообщение #497

laughed as one fey
Сообщений: 11 843
Спасибо сказали: 19746 раз




http://en.wikipedia.org/wiki/Boolean_data_type


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
packa
сообщение 30 Jun 2014, 21:22
Сообщение #498

Immortal
Сообщений: 3 299
Спасибо сказали: 2623 раза




Кто нибудь слышал про язык Rust?

Реквест максимальной инфы по нему, если кто распологает!)
Нужно в качестве огромного проекта.


--------------------
Удалено Администрацией. Браузеры жаловались на вредоносное ПО.
Ссылка на оригинальное изображение: http://herоeslibrary.nеt/Site_images/admin.jpg
Ссылка на сайт по нажатию баннера: http://herоeslibrary.nеt

(ссылки содержат кириллические символы вместо оригинальных)

Видишь бяку, - упрости! (с) кто-то из выдающихся математиков)
Учи матан & Сходи с ума (с) архидедус
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 09 Aug 2016, 10:50
Сообщение #499

Невыносимый
Сообщений: 13 983
Спасибо сказали: 26456 раз




From gmakers.ru:
Цитата
А я кстати придумал, как можно довольно легко и надёжно отличить мышь от тачскрина. По умолчанию запускать как тачскрин, но если игрок смог переместить курсор не нажимая ЛКМ - значит мышь.
Гениально же.


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 04 Dec 2017, 16:43
Сообщение #500

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5911 раз




Немного некропостинга и гитхаб с Адвентом в функциональном стиле: https://github.com/Guevara-chan/Advent-of-Code-2017


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post

25 страниц V  « < 23 24 25
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 11 December 2019 - 08:48
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика