- 1
- 2
- 3
https://software.intel.com/sites/default/files/managed/2b/80/5-level_paging_white_paper.pdf
http://lkml.iu.edu/hypermail/linux/kernel/1612.1/00383.htmlНашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
https://software.intel.com/sites/default/files/managed/2b/80/5-level_paging_white_paper.pdf
http://lkml.iu.edu/hypermail/linux/kernel/1612.1/00383.html
            x86-64 is currently limited to 256 TiB of virtual address space and 64 TiB
of physical address space. We are already bumping into this limit: some
vendors offers servers with 64 TiB of memory today.
To overcome the limitation upcoming hardware will introduce support for
5-level paging. It is a straight-forward extension of the current page
table structure adding one more layer of translation.
It bumps the limits to 128 PiB of virtual address space and 4 PiB of physical address space. 
This "ought to be enough for anybody" Â.
https://imgs.xkcd.com/comics/supported_features.png
        
+1
$probabilities=array();
$get_items=mysql_query("SELECT * FROM `items` WHERE `iid` IN(".mysql_real_escape_string($case['items']).") AND `status`='1' AND `count`>'0' ORDER BY `probability` DESC;");
while($item=mysql_fetch_assoc($get_items)){
$probabilities[$item['probability']]=0;
}
$dices=$probabilities;
for($pi=100;$pi>=0;$pi--){
foreach($probabilities as $probability=>$pstate){
if(rand(1, 2)==2){
if($pi<=$probability){
$dices[$probability]=$dices[$probability]+1;
}
}	
}
}
arsort($dices, SORT_NUMERIC);
$probability=reset(array_keys($dices));
$get_prize=mysql_query("SELECT * FROM `items` WHERE `iid` IN(".mysql_real_escape_string($case['items']).") AND `status`='1' AND `count`>'0' AND `probability`='".$probability."' ORDER BY RAND() LIMIT 1;");
            Написал с нуля на заказ движок для очередного детского говноказино (розыгрыш пикселей для игр в "Steam").
Заказчик умолял сделать возможность управления вероятностью выпадения того или иного предмета (в процентах), что я и сделал. Вышеприведённый алгоритм как раз отвечает за выбор приза в соответствии с прописанными в настройках вероятностями. Сейчас кажется, что решение не самое "изящное".
Есть, что заметить по поводу алгоритма?
        
+2
https://www.youtube.com/watch?v=Zrd7kFFCfp4
https://www.youtube.com/watch?v=yuMlhKI-pzECPU
+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 центов. Решать можно как угодно - в лоб перебором, или в общем случае (для произвольной суммы размера и набора монет).
У кого какие варианты еще будут?)