LINUX.ORG.RU

Функция «лесенка»

 , , jscript,


0

2

Натолкнулся на такой код на jscript

d = d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : 1;

Про сбалансированные деревья и прочую эффективность не думаем, ибо jscript...

На лицо видно дупликация данных - каждое число по два раза. Как это максимально красиво написать? (на любом языке из популярных)

★★★★★

Последнее исправление: fornlr (всего исправлений: 1)
Ответ на: комментарий от anonymous

Да если что, то обёртку можно сделать и засунуть, но там ни точки входа, ни цикла не вижу. Троллишь небось...

superuser ★★★★☆
()
Ответ на: комментарий от superuser

Чувак, ты серьёзно? Какая точка входа? О чём ты?

anonymous
()

не максимально

facet(a,v)int *a;{
	return *a<v?0:v==(*a=v);
}

main(){
	int d,*p=&d;
	int i;
	for(i=-20;i<=20;i++){
		d=i;
		facet(p,10)||facet(p,5)||facet(p,3)||facet(p,2)||(d=1);
		printf("%i %i\n",i,d);
	}
}

сложно выбрать

v==(*a=v) или (*a=v,v)

qulinxao ★★☆
()

в чём подвох?

(some #(when (>= 3 %) %) [10 7 5 3 2 1]) ;; d - 3
Debasher ★★★★★
()
Последнее исправление: Debasher (всего исправлений: 1)
Ответ на: не максимально от qulinxao

facet(a,v)int *a;{

Все по машинам, зомби в треде!

anonymous
()

Ну, и раз уж я начал баловаться erlang, а его тут вроде ещё не было:

-module(step).
-export([step/1, steps/1]).

step(N) when N >= 10 -> 10;
step(N) when N >= 5 -> 5;
step(N) when N >= 3 -> 3;
step(N) when N >= 2 -> 2;
step(_) -> 1.

steps(NN) -> lists:map(fun step/1, NN).

> step:steps([1,2,3,4,5,6,7,8,9,10,11,12]).
[1,2,3,3,5,5,5,5,5,10,10,10]
beastie ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.