Пянтичное: опять фибоначчи
-
- Уже с Приветом
- Posts: 3836
- Joined: 13 Sep 2007 10:06
Re: Пянтичное: опять фибоначчи
Не зря я яву не люблю. Какой на редкость уродский код получается...
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Пянтичное: опять фибоначчи
А какой код классный?avitya wrote:Не зря я яву не люблю. Какой на редкость уродский код получается...
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Пянтичное: опять фибоначчи
Присоеденяюсь к вопросу. Хочу посмотреть на изящный код.crypto5 wrote:А какой код классный?avitya wrote:Не зря я яву не люблю. Какой на редкость уродский код получается...
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: Пянтичное: опять фибоначчи
Ну вот, например, парсинг обратной польской записи в изящном коде :
Code: Select all
calc :: String -> [Float]
calc = foldl f [] . words
where
f (x:y:zs) "+" = (y + x):zs
f (x:y:zs) "-" = (y - x):zs
f (x:y:zs) "*" = (y * x):zs
f (x:y:zs) "/" = (y / x):zs
f xs y = read y : xs
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Пянтичное: опять фибоначчи
Code: Select all
Long calc(Stack<String> stack) {
String c = stack.pop();
switch(c) {
case "+": return calc(stack) + calc(stack);
case "-": return calc(stack) - calc(stack);
case "*": return calc(stack) * calc(stack);
case "/": return calc(stack) / calc(stack);
}
return Long.valueOf(c);
}
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Пянтичное: опять фибоначчи
Редко смотрю на код парсеров, потому что всякие парсеры я, как правило, все-равно на ANTLR пишу и в ANTLR записи оно все-равно намного удобней и изящней . А какой оно мне при этом код нагенерит (уверен, что уродский) - мне без разницыZorkus wrote:Ну вот, например, парсинг обратной польской записи в изящном коде
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Пянтичное: опять фибоначчи
Или Питон При этом можно обойтись без всяких case и добавлять операторы прямо в ops, без изменения основного кодаcrypto5 wrote:Code: Select all
Long calc(Stack<String> stack) { String c = stack.pop(); switch(c) { case "+": return calc(stack) + calc(stack); case "-": return calc(stack) - calc(stack); case "*": return calc(stack) * calc(stack); case "/": return calc(stack) / calc(stack); } return Long.valueOf(c); }
Code: Select all
import string, operator
ops = {'+': operator.add, '-': operator.sub, '*': operator.mul, '/': operator.div}
while True:
try:
st = []
# читаем из потока
for tk in string.split(raw_input()):
if tk in ops:
y, x = st.pop(), st.pop()
z = ops[tk](x,y)
else:
z = float(tk)
st.append(z)
assert len(st) <= 1
if len(st)==1: print(st.pop())
except EOFError: break
except: print('Error')
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Пянтичное: опять фибоначчи
Code: Select all
from operator import *
ops = {’+’: add, ’-’: sub, ’*’: mul, ’/’: div}
def eval(l):
if l[0].isdigit(): return [int(l[0])] + l[1:]
l1 = eval(l[1:])
l2 = eval(l1[1:])
return [ops[l[0]](l1[0], l2[0])] + l2[1:]
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Пянтичное: опять фибоначчи
Только здесь http://ideone.com/plain/HBXAZ кавычки правильно расставлены, а в отквотированном посте одинарная кавычка (’+’ и т.п.), когда я попытался сделать copy&paste - ругается при компиляцииcrypto5 wrote:Code: Select all
from operator import * ops = {’+’: add, ’-’: sub, ’*’: mul, ’/’: div} def eval(l): if l[0].isdigit(): return [int(l[0])] + l[1:] l1 = eval(l[1:]) l2 = eval(l1[1:]) return [ops[l[0]](l1[0], l2[0])] + l2[1:]
Это Привет шалит или твой редактор?
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Пянтичное: опять фибоначчи
Code: Select all
from operator import *
ops = {'+': add, '-': sub, '*': mul, '/': div}
def eval(l):
c = l.pop()
if(c.isdigit()): return int(c)
return ops[c](eval(l), eval(l))
s = ['2', '2', '2', '+', '+']
print eval(s)
In vino Veritas!
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Пянтичное: опять фибоначчи
Какой то веб редактор найденный на скорую руку в гуглеИнтеррапт wrote: Это Привет шалит или твой редактор?
In vino Veritas!
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Пянтичное: опять фибоначчи
Кстати не могла пройти мимо на ФБ. Сразу вспомнилась эта тема, да и пятница на двореАццкоМото wrote:Исключительно в плане пятничного развлечения
Всегда лажал на Привете задачу про вычисление чисел Фибоначчи.
.....
Неплохая, как оказалось, задача. Ни разу такого не видел и верить в такое не хотел. Всем пятницы, посоны! И, конечно же, девч0нки
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 3836
- Joined: 13 Sep 2007 10:06
Re: Пянтичное: опять фибоначчи
это просто прогрессия...
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Пянтичное: опять фибоначчи
Да, довольно безграмотная SMSка.avitya wrote:это просто прогрессия...
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Пянтичное: опять фибоначчи
Да, это "пять", слов нетСабина wrote:Кстати не могла пройти мимо на ФБ. Сразу вспомнилась эта тема, да и пятница на двореАццкоМото wrote:Исключительно в плане пятничного развлечения
Всегда лажал на Привете задачу про вычисление чисел Фибоначчи.
.....
Неплохая, как оказалось, задача. Ни разу такого не видел и верить в такое не хотел. Всем пятницы, посоны! И, конечно же, девч0нки
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Пянтичное: опять фибоначчи
Мне тоже было смешно, а некоторые сразу бросились ошибки исправлять, а тут в них и есть весь приколАццкоМото wrote: Да, это "пять", слов нет
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 7937
- Joined: 16 May 2011 09:10
- Location: Camel
Re: Пянтичное: опять фибоначчи
А что такое "фибоначчи"?Сабина wrote:Кстати не могла пройти мимо на ФБ. Сразу вспомнилась эта тема, да и пятница на двореАццкоМото wrote:Исключительно в плане пятничного развлечения
Всегда лажал на Привете задачу про вычисление чисел Фибоначчи.
.....
Неплохая, как оказалось, задача. Ни разу такого не видел и верить в такое не хотел. Всем пятницы, посоны! И, конечно же, девч0нки
If you wanna be rich
Idi rabotai bitch..
Idi rabotai bitch..
-
- Уже с Приветом
- Posts: 1127
- Joined: 11 Apr 2004 03:28
Re: Пянтичное: опять фибоначчи
Если в лоб то:
Code: Select all
unsigned long fib( int n ) {
unsigned long p0 = 0;
unsigned long p1 = 1;
if ( n < 1 || n > MAX ) {
return 0; // or die
} else if ( n == 1 ) {
return p0;
} else if ( n == 2 ) {
return p1;
}
unsigned long s;
while ( n-- > 2 ) {
s = p0 + p1;
p0 = p1;
p1 = s;
}
return s;
}
-
- Уже с Приветом
- Posts: 314
- Joined: 24 May 2013 22:04
Re: Пянтичное: опять фибоначчи
А если по лбу, то:sergant wrote:Если в лоб
Code: Select all
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
-
- Уже с Приветом
- Posts: 1127
- Joined: 11 Apr 2004 03:28
Re: Пянтичное: опять фибоначчи
5+rorp wrote:А если по лбу, то:sergant wrote:Если в лобCode: Select all
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
А fibs(n) там нет?
-
- Уже с Приветом
- Posts: 1127
- Joined: 11 Apr 2004 03:28
Re: Пянтичное: опять фибоначчи
Лучший программный продукт это программист (желательно хороший) под рукой... (c) мой
-
- Уже с Приветом
- Posts: 1663
- Joined: 16 Jul 2009 14:18
- Location: Uganda
Re: Пянтичное: опять фибоначчи
Лучший программист - этот тот программист, кто написал этот код. Потому как собирать 4 либы, написанные разными людьми, в одно целое и без создателей - ...sergant wrote:Лучший программный продукт это программист (желательно хороший) под рукой... (c) мой