Language detail: PHP
Coverage: 75.19%
|
number of '+' ratings |
contribution for coverage |
Unsolved challenges
- tailの実装 (Nested Flatten)
- lessの実装 (Nested Flatten)
- クリップボードへの転送 (Nested Flatten)
- コード中の文字の頻度分析 (Nested Flatten)
- 出力の一時停止と再開 (Nested Flatten)
codes
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 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関数を使うと楽が出来ます。
see: PHP: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として実装されています。
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)
next >>
PHPは$_ENVで環境変数を扱います。
1 2 3 4 5 | <?php
foreach( $_ENV as $key => $val ) {
echo $key.': '.$_ENV[$key].PHP_EOL;
}
|





だいら
#7253()
[
PHP
]
Rating0/0=0.00
Rating0/0=0.00-0+