だいら

next >>

文字列型日時ののN秒後時間取得 (Nested Flatten)

echoが2つになってしまった・・・。片方いらないです。

1
2
3
4
<?php
function DateEx($time, $diff){
    echo echo date('YmdHis',strtotime($time)+$diff);
}
LL Golf Hole 8 - 横向きのピラミッドを作る (Nested Flatten)
1
2
for($c=2*fgets(STDIN);$i++<$c;)echo str_repeat('*',($i>$c/2)?$c-$i:$i)."
";
LL Golf Hole 6 - 10進数を2進数に基数変換する (Nested Flatten)
変換先指定対応版
1
<?$a=split(' ',fgets(STDIN));echo base_convert($a[0],10,$a[1]>0?$a[1]:2);

短くする楽しみが全く無いな。

1
<?=decbin(fgets(STDIN));
LL Golf Hole 5 - 最上位の桁を数え上げる (Nested Flatten)

素直に書いた方が短いんですけどね。71byte

1
2
<?$m=fgets(STDIN);for($a=0;$a<=$m;$a+=pow(10,strlen($a)-print$a.'
'));

80byte

1
2
<?$m=fgets(STDIN);for($a=0;$a<=$m;eval('$a+=1e'.(strlen($a)-1).';'))echo$a,'
';
LL Golf Hole 3 - 13日の金曜日を数え上げる (Nested Flatten)
1
2
<?for(;1388415600>$t=strtotime($i++."day");$c+=date(dw,$t)-135?0:print date("Y-m-d
",$t));echo$c;
LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする (Nested Flatten)
処理が終わらないですね。
golf的にはタイムアウト扱いになるのでは?

Cygwin gcc3.4.4で確認

1
main(a,b){for(;(b=getchar())>0;)a=putchar(b>96&a<33?b-32:b);}
1
<?=ucwords(fgets(STDIN));
憂鬱な勇者 (Nested Flatten)

階乗計算をどうするかがポイントですかね。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
//モンスターリスト
$monster = array("焼きたてパン","強いシャチホコ","もんじゃ焼き一年生","怪人ホタテ男","ニセ勇者","逃げ足の早いアレ","睡魔","煩悩","愛らしい子犬の中の人","恋するスズメバチ","勇敢なクマンバチ","信じられない物","勇者の師匠","浮遊する鎧","怪盗ドボン","闇の招き猫","誘惑のカスタードクリーム","しょっぱすぎる籠手","カレー味の兜","光沢だけは一流の盾","若葉マークのモンスター","新緑の季節","梅雨時の車両のニオイ","暑すぎる夏","新宿らしき何か","やたら発達したドーナツ","育ちすぎたクマー","なごやかな雰囲気","凍り付いた気配","忍び寄る恐怖");

//スキルリスト
$skill = array("お豆腐の買い方","鉛筆の買い方","消しゴムの使い方","メモの取り方","攻撃に使えないこともない呪文","裏町の歩き方","森林浴","珈琲の味","しじみのみそ汁の作り方","回覧板の回し方","郵便物の投函方法","立ち話のコツ","猫の呼び方","犬の呼び方","カラスの呼び方","鳩専用豆鉄砲","秘密の趣味","速く走るコツ","剣の使い方","斧の使い方","まきわりで、まっきわりわり","聖なる祈り","孤独","涼しく過ごすコツ","お洒落のコツ","卵をふわっと焼く方法","ごはんの研ぎ方","油汚れの対応方法","大人の振るまい","Suicaの使い方",);

for($i = 0; $i < 30; $i++){
    echo "*-----\n";
    shuffle($monster);
    echo array_pop($monster) . "を倒した!\n";
    echo fact($i + 1) . "の経験値を得た。\n";
    if(count($monster) == 0)
        break;
    echo "勇者は" . ($i + 1) . "にレベルが上がった!\n";
    shuffle($skill);
    echo "勇者は、" . array_pop($skill) . "を覚えた。\n\n\n";
    echo "そして、\nかくかくしかじかで、山あり谷ありの冒険が続いたが割愛。\n\n";
}
echo "勇者は、また、レベルが上がった!\n";
echo "勇者は、ふと空しさを覚えた。";

//階乗計算
function fact($x){
    return bcmul($x ,($x <= 1 ? 1 : fact(bcsub($x, 1))));
}
リストを逆順に表示 (Nested Flatten)

副作用を破壊的であるととりました。

1
2
3
4
5
6
7
8
9
<?php
// 配列へ整形
$given_list = "1,2,3,4,5";
$array = explode(',', $given_list);

// 出力
while(count($array)){
    echo array_pop($array)."\n";
}
循環関数 (Nested Flatten)

特にひねりも無く。

1
2
3
4
5
<?php
function modular($n, $low, $high){
    $a = $n % ($high - $low + 1);
    return $a < 0 ? $high + $a + 1 : $low + $a;
}
コメントの削除 (Nested Flatten)

token_get_all関数を使うと楽が出来ます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
function decomment($sorce){
    $out = '';
    foreach(token_get_all($sorce) as $token){
        if(is_array($token)){
            if($token[0] != T_COMMENT){
                $out .= $token[1];
            }
        }else{
            $out .= $token;
        }
    }
    return $out;
}
文字変換表に基く文字列の変換 (Nested Flatten)
(1)です。
PHPではstrtrとして実装されています。
1
2
3
4
5
<?php
$str = 'typewriter';
$from = 'qwertyuiop';
$to = 'QWERTYUIOP';
echo strtr($str, $from, $to);
2次元ランダムウォーク (Nested Flatten)
こんな感じでしょうか。 移動距離は1固定です。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<?php
//移動回数
define('LOOP', 10);

//初期位置
$pos[0] = array('x' => 0, 'y' => 0);

for($time = 1; $time <= LOOP; $time++){
    $rad = deg2rad(mt_rand()%360);
    $x = $pos[$time-1]['x'] + cos($rad);
    $y = $pos[$time-1]['y'] + sin($rad);
    $pos[$time] = array('x' => $x, 'y' => $y);
}

foreach($pos as $key => $val){
    echo $key . " " . $val['x'] . " " . $val['y'] . " " . "\n";
}
比較しないソートの作成 (Nested Flatten)
バケツで。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<?php
$min = -1;
$max = 10;
$input = array(-1, 9, 4, 8, 9, 6, 3, 9, 5, 2);
$sorted = bucketsort($min, $max, $input);

function bucketsort($min, $max, $input){
    for($i = $min; $i <= $max; $i++)
        $temp[$i] = 0;
    foreach($input as $v)
        $temp[$v]++;
    foreach($temp as $k => $v)
        for($i = 0; $i < $v; $i++)
            $sorted[] = $k;
    return $sorted;
}
コラッツ・角谷の問題 (Nested Flatten)

愚直に。 答えが出るまで数十分かかります。 PHP遅すぎる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$max = array(1,0);
$maxValue = pow(2,20);

for($i=1;$i<=$maxValue;$i++){
    $deep = collatz($i);
    if($max[1] < $deep){
        $max[0] = $i;
        $max[1] = $deep;
    }
}
echo "n=" . $max[0] . " f(n)=" . $max[1];

function collatz($value, $deep = 0){
    if($value == 1){
        return $deep;
    }elseif($value%2 == 0){
        $deep = collatz($value/2, $deep);
    }else{
        $deep = collatz($value*3+1, $deep);
    }
    return $deep + 1;
}
マルバツゲーム (Nested Flatten)

判定おかしかったですね。 修正しました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
79c79
<         for ($i = 0; $i < 2; $i++) {
---
>         for ($i = 0; $i < 3; $i++) {
92,95c92,95
<             ($this->field[0][0] == $player &&
<              $this->field[2][2] == $player) ||
<             ($this->field[0][2] == $player &&
<              $this->field[2][0] == $player)) {
---
>             (($this->field[0][0] == $player &&
>               $this->field[2][2] == $player) ||
>              ($this->field[0][2] == $player &&
>               $this->field[2][0] == $player))) {
next >>

Index

Feed

Other

Link

Pathtraq

loading...