List of comments
標準入力から。
この手の文字列操作はガーベジコレクタのおかげでたやすくできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import std.stdio, std.string;
void main() {
auto t = chomp(readln), s = "0".dup;
while(s.length < t.length || s <= t) {
writeln(s);
if(s[0] < '9') {
s[0]++;
} else {
s = "10" ~ s[1 .. $];
}
}
}
|
時刻が付いてしまうのはまぁ許される? Fri Feb 13 16:31:21 +0900 2009 Fri Mar 13 16:31:21 +0900 2009 Fri Nov 13 16:31:21 +0900 2009 Fri Aug 13 16:31:21 +0900 2010 Fri May 13 16:31:21 +0900 2011 Fri Jan 13 16:31:21 +0900 2012 Fri Apr 13 16:31:21 +0900 2012 Fri Jul 13 16:31:21 +0900 2012 Fri Sep 13 16:31:21 +0900 2013 Fri Dec 13 16:31:21 +0900 2013 10
1 | p (Time.now..Time.gm(2013,12,31)).step(86400).count{|x|x.mday==13&&x.wday==5&&!p(x)}
|
戦略はいたってシンプルで、 ・文字列を単語毎に分ける ・単語の頭を大文字にする ・単語をつなげる というかんじです。
1 | (def c(x)(prn:apply +(intersperse" "(map(fn(y)(=(y 0)(upcase:y 0))y)(tokens x)))))
|
標準入力から一行読み込んで変換。
1 2 3 4 5 | import std.stdio, std.conv, std.string;
void main() {
writefln("%b",to!(int)(strip(readln)));
}
|
gorubyはKernel.#gsubがないのであまり短くならない。
1 | goruby -pe'$_.gsub!(/\b./){$&.up}'
|
Cで書きたい。でも、どっちかというとこれはbash ワンライナー?
1 | echo "main(){printf(\"`curl 'http.php?url=http://ll.jus.or.jp/2008/info/xgihyo'`\");}" | (gcc -xc -;./a.out)
|
コマンドラインで数を指定します。 int/longの範囲を超える大きな数値でもOK.数値ではなく文字列処理でやってるんで。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <stdio.h>
int main(int argc, char *argv[])
{
char *p, *q;
int len;
len=strlen(argv[1]);
p=malloc(len+1);
memset(p, ' ', len);
p[len]='\0';
q=p+len-1;
*q='0' -1;
while(strcmp(argv[1], p)>0) {
if(++(*q) >'9') {
*q='0';
*--q ='1';
}
puts(q);
}
}
|
一応gorubyの例として
1 | goruby -ropen-uri -e'pr *op("http://tinyurl.com/api-create.php?url=http://ll.jus.or.jp/2008/info/xgihyo")'
|
Java6付属のRhinoでワンライナー。 コマンドライン引数から整数を受け取る。
1 | jrunscript -e "print((arguments[0]*1).toString(2))" 123
|
テスト
1 2 3 4 5 6 | int main(){
int i = 0, j = 0;
int count=10;
return 0;
}
|
Math::BaseCalcモジュールを使用して。
コマンドライン引数に基数(2,8,16等)、数値の順で指定します。
% perl xxx.pl 2 256
100000000
% perl xxx.pl 8 256
400
% perl xxx.pl 16 256
100
基数が2,8,10,16だったら匿名の方のようにそれぞれ%b %o %d %xを指定すればsimpleでいいですね。
コマンドライン引数に基数(2,8,16等)、数値の順で指定します。
% perl xxx.pl 2 256
100000000
% perl xxx.pl 8 256
400
% perl xxx.pl 16 256
100
基数が2,8,10,16だったら匿名の方のようにそれぞれ%b %o %d %xを指定すればsimpleでいいですね。
see: Math::BaseCalc(CPAN)
1 2 3 | use Math::BaseCalc;
$c=new Math::BaseCalc(digits=>[0..($ARGV[0]-1)]);
print$c->to_base($ARGV[1]);
|
短くなった。卑怯くさいけど。 #7254のコードを利用してますが、 基数だけは弄れるようにしておきました。
1 2 3 4 | <stylesheet version="2.0" xmlns="http://www.w3.org/1999/XSL/Transform">
<import href="http://tinyurl.com/58455r"/>
<variable name="b" select="2"/>
</stylesheet>
|
正攻法で。 冒頭の 変数b の値が基数で、2~10まで対応してます。 短くとか.. 勘弁してください
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 | <x:stylesheet version="2.0"
xmlns:x="http://www.w3.org/1999/XSL/Transform"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:f="http://www.w3.org/2005/xpath-functions"
xmlns:y="uri:ja.doukaku.org:my-functions"
>
<x:variable name="b" as="s:integer" select="2"/>
<x:output method="text"/>
<x:template match="/">
<x:for-each select="0 to 256">
<x:value-of select="y:f(.)"/>
<x:text>
</x:text>
</x:for-each>
</x:template>
<x:function name="y:f" as="s:string">
<x:param name="n" as="s:integer"/>
<x:value-of select="if ($n=0) then '0' else f:string-join(f:reverse(y:g($n)),'')"/>
</x:function>
<x:function name="y:g" as="s:string*">
<x:param name="n" as="s:integer"/>
<x:if test="$n>0">
<x:sequence select="s:string($n mod $b)"/>
<x:sequence select="y:g($n idiv $b)"/>
</x:if>
</x:function>
</x:stylesheet>
|
変換先指定対応版
1 | <?$a=split(' ',fgets(STDIN));echo base_convert($a[0],10,$a[1]>0?$a[1]:2);
|
短くする楽しみが全く無いな。
1 | <?=decbin(fgets(STDIN));
|
old awkです。 ほぼそのままC言語のコードになっちゃいました。
1 2 3 4 5 6 7 8 9 10 11 12 13 | #!awk -f
{
max=$1
print 0
for(b=1;;b*=10) {
n=b
for(j=10;--j>0;n+=b) {
if(n>max) next
print n
}
}
}
|
old awkです。何の芸もありませんが。
1 2 3 4 5 6 7 8 9 | #!/bin/awk -f
{
n=$1
a=n%2
while((n=int(n/2))>0)
a= (n%2) a
print $1 "->" a
}
|
間違い、桁が逆でした。
1 2 3 4 5 6 | d=$1
while [ $d != 0 ];do
t=$(($d%2))$t
d=$(($d/2))
done
echo $t
|
shimakumaさんに比べると、ちょっと長いですね・・
1 2 | def input = System.in.newReader().readLine()
println Integer.toBinaryString(input.toInteger())
|






yugui #7267() [ Ruby ] Rating0/0=0.00
goruby版
Rating0/0=0.00-0+