- 1
Прыщеговно
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Прыщеговно
Explanation: The issue stemmed from two issues one in normpath and the other in os.path.join. It turns out that when normpath (or abspath) gets an absolute path starting with a single slash or 3+ slashes, the result would have a single slash. However, if the input had exactly two leading slashes the output will retain them. This behavior conforms to an obscore passage in the POSIX standard (last paragraph):
A pathname that begins with two successive slashes may be interpreted in an implementation-defined manner, although more than two leading slashes shall be treated as a single slash.
normpath и abspath из os.path
−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-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;
}
как-то глянул в код соседа)