Language detail: PHP

Coverage: 75.19%
number of '+' ratings
contribution for coverage

Unsolved challenges

codes

Feed

Used modules

next >>

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)

powを使った方が短いようですが一応載せてみます。

1
<?for($a=0;$a<=$argv[1];)ereg('^.0*$',$a++,$m)&&print"$m[0] ";

"の方が微妙に短いようですね。

1
<?for($a=0;$a<=$argv[1];$a+=pow(10,strlen($a)-print"$a "));

素直に書いた方が短いんですけどね。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,'
';
echoクライアント (Nested Flatten)

PHP 5.1.6

$ php -q client_echo.php localhost 7 < input_file > result_file

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/usr/bin/env php
<?php
$host = $argv[1];
$port = $argv[2];

$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock, $host, $port);

while ($line = fgets(STDIN, 1024)) {
    socket_write($sock, $line, strlen($line));
    echo socket_read($sock, 1024);
}
?>
LL Golf Hole 3 - 13日の金曜日を数え上げる (Nested Flatten)

http://ja.doukaku.org/comment/7029/ だいらさんの投稿を参考に少し縮めました。まだ負けてますが、マジックナンバーぽいのが少ないと言うことで。

1
<?for($i=time();$i<mktime(0,0,0,1,1,14);$i+=86400)$n+=date(wd,$i)-513?0:print date(YMj_,$i);echo$n;
LL Golf Hole 4 - 文章から単語の索引を作る (Nested Flatten)

「g」がファイル名の場合 107 bytes です。

1
<?php foreach(file(g)as$l=>$d){preg_match_all('/\w+/',$d,$m);foreach($m[0]as$w)$D[$w][]=$l+1;}print_r($D);
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;

PHPがなかったので。 あまりうまく書けませんでしたが。

1
2
3
for($i=new DateTime;$i<=new DateTime('2013-12-31');$i->modify('+1 day')){
 if($i->format('wd')==513){$s.=$i->format('Y-m-d ');++$n;}
}echo$s,$n;
LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする (Nested Flatten)
1
<?=ucwords(fgets(STDIN));
LL Golf Hole 1 - tinyurl.comを使ってURLを短縮する (Nested Flatten)

PHPがなかったので登録して書いてみます。第二問も出るのかな?

1
<?=join(file('http://tinyurl.com/api-create.php?url=http://ll.jus.or.jp/2008/info/xgihyo'));
憂鬱な勇者 (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)

PHPは$_ENVで環境変数を扱います。

1
2
3
4
5
<?php

foreach( $_ENV as $key => $val ) {
    echo $key.': '.$_ENV[$key].PHP_EOL;
}
next >>

Index

Feed

Other

Link

Pathtraq

loading...