- 1
- 2
https://www.youtube.com/watch?v=Zrd7kFFCfp4
https://www.youtube.com/watch?v=yuMlhKI-pzE
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
https://www.youtube.com/watch?v=Zrd7kFFCfp4
https://www.youtube.com/watch?v=yuMlhKI-pzE
CPU
+1
-- Few Scum
import Data.Char
import Text.Read
import Control.Applicative
import Data.Ratio
import Numeric
import Data.List
import Data.Maybe
data Token
=TLetter Char
|TNumf Rational
|TOp Char
|LBrace
|RBrace
deriving (Show, Eq)
data Expr
=Letter Char
|Numf Rational
|Op Char Expr Expr
|Diff Expr
instance Show Expr where
show (Letter c) = [c]
show (Op c el er) = '(' : show el ++ ')' :
c : '(' : show er ++ ")"
show (Numf v) = show $ toDouble v
show (Diff e) = '(' : show e ++ ")'"
toDouble r = fromRational r :: Double
readUnsignedRationalMaybe f = getParseResult $ parseValue f where
parseValue f = {- readSigned -} readFloat f :: [(Rational, String)]
getParseResult [(value, "")] = Just value
getParseResult _ = Nothing
-- Разбиваем строку на элементы, возаращает перевернутый список токенов
tokenize "" = Nothing
tokenize sourceExpressionString = tok [] sourceExpressionString where
tok [] (c:s)
| c == '-' = tok [TOp '-', TNumf 0] s
tok r@(LBrace:_) (c:s)
| c == '-' = tok (TOp '-':TNumf 0:r) s
tok r (c:s)
| c == '(' = tok (LBrace:r) s
| c == ')' = tok (RBrace:r) s
| isLetter c = tok (TLetter c:r) s
| isOperation c = tok (TOp c:r) s
| isNumber c = parseNumf r (c:s)
tok r "" = Just r
tok resultParsedTokens sourceExpressionString = Nothing
isOperation = (`elem` "+-*/")
isNumf c = isNumber c || c == '.'
parseNumf r s = maybeNumber >>= makeResult where
(numberString, tail) = span isNumf s
maybeNumber = readUnsignedRationalMaybe numberString--readMaybe numberString
makeResult number = tok (TNumf number:r) tail
-- Дерево выражений из списка токенов
parse reversedTokens = reversedTokens >>= makeTree where
priorityOps = ["+-","/*"]
subExpr = splitIntoOperationAndSubExpressions
splitIntoOperationAndSubExpressions reversedTokens =
id =<< find isJust (map (findOp reversedTokens [] 0) priorityOps)
findOp (LBrace:_) _ 0 _ = Nothing -- dont checked on left expression, probably can safety removed
findOp (RBrace:l) r b ops = findOp l (RBrace:r) (b+1) ops
findOp (LBrace:l) r b ops = findOp l (LBrace:r) (b-1) ops
findOp (TOp c:l) r 0 ops
| c `elem` ops = Just (c, l, reverse r)
| otherwise = findOp l (TOp c:r) 0 ops
findOp leftSubExpression [] b operationsForFind
| b > 0 = Nothing
findOp (c:l) r b ops = findOp l (c:r) b ops
findOp [] rightSubExpression braceAmount operationsForFind = Nothing
makeTree reversedTokens = mt reversedTokens $ subExpr reversedTokens
mt t@(RBrace:tt) Nothing
| last t == LBrace = mt (init tt) $ subExpr (init tt)
mt [TLetter v] Nothing = Just $ Letter v
mt [TNumf v] Nothing = Just $ Numf v
mt _ Nothing = Nothing
mt _ (Just (o, l, r)) = makeOperationExpression leftExpressionTree rightExpressionTree o where
leftExpressionTree = mt l $ subExpr l
rightExpressionTree = mt r $ subExpr r
makeOperationExpression = moe
moe Nothing _ _ = Nothing
moe _ Nothing _ = Nothing
moe (Just leftExpressionTree) (Just rightExpressionTree) operation = Just $ Op operation leftExpressionTree rightExpressionTree
-- Простейшее упрощение выражений
firstSimplify e = simplifyTreeHeightTimes <$> e where
stepSimplify = fs
fs (Op '*' e (Numf 1)) = e
fs (Op '*' (Numf 1) e) = e
fs (Op '+' e (Numf 0)) = e
fs (Op '+' (Numf 0) e) = e
fs (Op '/' e (Numf 1)) = e
fs (Op '-' e (Numf 0)) = e
fs (Op '*' (Numf 0) _) = Numf 0
fs (Op '*' _ (Numf 0)) = Numf 0
fs (Op '/' (Numf 0) _) = Numf 0
fs (Op '/' (Letter l) (Letter r))
| l == r = Numf 1
fs (Op '-' (Letter l) (Letter r))
Новая Специальная Олимпиада объявляется открытой.
https://ideone.com/Bottp0
Реализовать поиск производной по выражению на любом языке. У кого получится компактнее, правильнее и больше функционала, тот и победил. Заявлять кандидата в победители (код и его автора) можно несколько раз если код улучшил или написал на другом языке. Призов, кроме почета и приятного времяпрепровождения, - не будет
Если кто-то что-нибудь поломает, то я буду очень рад.
Пока упрощение не работает на полную катушку и из функций производных только +-*/
Мой друг обещает ещё версию на крестах подогнать.
0
func handleRequest(conn net.Conn) {
// размер данных
buf := make([]byte, 4)
n, err := conn.Read(buf)
if err != nil {
fmt.Printf("%v", utils.ErrInfo(err))
}
size := utils.BinToDec(buf)
fmt.Printf("get data size: %v / n: %v\n", size, n)
if size < 10485760 {
// сами данные
binaryData := make([]byte, size)
n, err = io.ReadFull(conn, binaryData)
fmt.Printf("n: %v\n", n)
if err != nil {
fmt.Printf("%v", utils.ErrInfo(err))
}
gp3, err := ioutil.TempFile(os.TempDir(), "temp")
if err != nil {
fmt.Printf("%v", utils.ErrInfo(err))
}
mp4, err := ioutil.TempFile(os.TempDir(), "temp")
if err != nil {
fmt.Printf("%v", utils.ErrInfo(err))
}
err = ioutil.WriteFile(gp3.Name()+".3gp", binaryData, 0644)
if err != nil {
fmt.Printf("%v", utils.ErrInfo(err))
}
out, err := exec.Command("/usr/bin/ffmpeg", "-i", gp3.Name()+".3gp", mp4.Name()+".mp4").Output()
if err != nil {
fmt.Println("/usr/bin/ffmpeg", "-i", gp3.Name()+".3gp", mp4.Name()+".mp4")
fmt.Printf("%v\n", utils.ErrInfo(err))
}
fmt.Printf("out: %v\n", out)
data, err := ioutil.ReadFile(mp4.Name()+".mp4")
if err != nil {
fmt.Println(err)
}
// в 4-х байтах пишем размер данных, которые пошлем далее
size := utils.DecToBin(len(data), 4)
n, err = conn.Write(size)
if err != nil {
fmt.Println(err)
}
fmt.Printf("n: %v\n", n)
// далее шлем сами данные
n, err = conn.Write(data)
if err != nil {
fmt.Println(err)
}
fmt.Printf("n: %v\n", n)
}
}
Со швабры, Go. Мне кажется, или здесь слишком много "if err != nil"?
+142
do
{
...
} while ((strcmp(input,"") != 0)); /* till end of string */
нашел в прошивке одного очень известного производителя сетевого оборудования, они так парсят команды, введенные пользователем
+79
Object o1 = true ? Integer.valueOf(1) : Double.valueOf(2.0);
Object o2;
if (true) {
o2 = Integer.valueOf(1);
} else {
o2 = Double.valueOf(2.0);
}
System.out.println(o1);
System.out.println(o2);
Такие вот в Java интересные типы-обёртки.
Проверить себя: http://ideone.com/BrhREq
Источник: http://java.dzone.com/articles/10-things-you-didnt-know-about
+118
put 'Сейчас я загадаю число от 1 до 100, и это будет..'
a = rnd(100)
put a.to_s + ' - загаданное число! В конце мы получим 4!'
b = a*2
put b.to_s + ' - это ' + a.to_s + ', умноженное на 2!'
c = b+8
put c.to_s + ' - это ' + b.to_s + ', к которому мы прибавили 8!'
e = c/2
put e.to_s + ' - это ' + c.to_s + ', которое мы разделили на 2!'
d = e-a
put d.to_s + ' - это результат. То есть мы отняли от ' + e.to_s + ' - ' + a.to_s + '. Видите, это же ' + d.to_s + '!'
С названием языка всё-таки решился, называл его "Lapis". (На Ruby синтаксис немного похож, но очень много будет отличий)!
Кто-нибудь хочет принять участие в разработке интерпретатора? Пишу на javascript-е, будет транслируемый язык.
Кто за, ставьте плюс посту и пишите в комментарии.
+136
int a;
cout<<"Enter a\n";
cin>>a;
if (a==1 && a!=2 && a!=3 && a!=4 && a!=5 && a<=5)
{
cout<<"Odin"<<endl;
}
else if (a==2 && a!=1 && a!=3 && a!=4 && a!=5 && a<=5)
{
cout<<"Dva"<<endl;
}
else if (a==3 && a!=1 && a!=2 && a!=4 && a!=5 && a<=5)
{
cout<<"Tri"<<endl;
}
else if (a==4 && a!=1 && a!=2 && a!=3 && a!=5 && a<=5)
{
cout<<"Chetire"<<endl;
}
else if (a==5 && a!=1 && a!=2 && a!=3 && a!=4 && a<=5)
{
cout<<"Pyat"<<endl;
}
как-то глянул в код соседа)
+133
int sum = 100;
int sch = 0;
for (int a50 = 0; a50 <= sum / 50; a50++)
{
for (int a25 = 0; a25 <= (sum - a50 * 50) / 25; a25++)
{
for (int a10 = 0; a10 <= (sum - a50 * 50 - a25 * 25) / 10; a10++)
{
for (int a5 = 0; a5 <= (sum - a50 * 50 - a25 * 25 - a10 * 10) / 5; a5++)
{
sch++;
}
}
}
}
Console.WriteLine(Convert.ToString(sch));
Задача: Подсчитайте сколькими способами можно разменять 1 доллар монетами достоинством 1, 5, 10, 25 и 50 центов. Решать можно как угодно - в лоб перебором, или в общем случае (для произвольной суммы размера и набора монет).
У кого какие варианты еще будут?)
+1002
template<class fwd, class Predicat>
fwd findLast(fwd one, fwd last, Predicat P)
{
if (one == last) return one;
fwd s = one;
fwd tt = ++s;
for ( ; s!=last; )
{
s = find_if(s, last, P);
if (s != last) { tt=++s; }
}
return tt;
}
Функция для поиска последнего вхождения элемента в контейнере STL с помощью алгоритма find_if.
+147
PHP язык несомненно порочный.
1. Взять, например, правило именования переменных - перед именем оных обязательно ставить знак доллара.
Т.е. в PHP закреплен (подсознательно или сознательно) посыл к тому что во главе любой вещи стоит доллар,
деньги, американские деньги, раздутая финансовая
пирамида современности как нечто обязательное к употреблению,
первостепенное, стоящее во главе всех вещей.
2. Заметим так же, что перед названиями функций, т.е. участков кода занимающихся программной работой,
подобного требования в PHP не существует.
Тем самым PHP внедряет в подсознание идеи обесценивания работы и труда.
3. Нетрудно связать второе с первым и понять что PH
психо-идеологически стимулирует склонность к рабству перед
вещественным, отрицает справедливого вознаграждения за труд, но превозносит власть денег, золота, роскоши и
вообще всего материального. Инспирирует рабовладельчество вещи над человеком, а не человека над вещью.
http://www.gamedev.ru/flame/forum/?id=152692#m10