uptime
現在の稼働時間と同じ長さの解剖学的に示唆的なプログレスバー(図を参照)を生成し、生成するプログラムを作成します。
$ uptime
23:01 up 34 days, 7:30, 5 users, load averages: 0.23 0.27 0.24
$ uptime|<command>
8==================================D
(34日= 34等号)
最短回答が勝ちます。
uptime
現在の稼働時間と同じ長さの解剖学的に示唆的なプログレスバー(図を参照)を生成し、生成するプログラムを作成します。
$ uptime
23:01 up 34 days, 7:30, 5 users, load averages: 0.23 0.27 0.24
$ uptime|<command>
8==================================D
(34日= 34等号)
最短回答が勝ちます。
回答:
入力は必要ありません(シェルアウトによる):
`w`=~/up (\d*)/;puts '8'+'='*$1.to_i+'D'
または標準入力(40文字)から:
gets=~/up (\d*)/;puts '8'+'='*$1.to_i+'D'
gets=~/up (\d*)/;puts "8#{?=*$1.to_i}D"
'gets=~/up (\d*)/;puts "8#{"="*$1.to_i}D"'.length=="gets=~/up (\d*)/;puts '8'+'='*$1.to_i+'D'".length
#true
a=`uptime` a=${a#*p } a=${a%% *};while((a--));do p==$p;done;echo I${p}I
私は自分の世代のアップタイムをインターネットに公開することにはあまり興味がないので、代わりにフェンスを描いています。同じ文字数です。p
呼び出し間でリセットすることを考えてください。
純粋なbash、71文字uptime
。
$ uptime
23:35:12 up 159 days, 4:15, 15 users, load average: 1.07, 0.63, 0.38
まあ、まあ、まあ...私のものはあなたのものよりも大きいです。
よくあることですが、Haskellは他の言語の中で最も極端なゴルフ適性を提供しませんが、問題の根底にある数学的な構造のエレガントな表現を可能にします。この分野での彼らの独創的な仕事に基づいて、Holkins-Krahulik近似演算子の Haskell実装を紹介することを目指しています。簡単に言えば、オペレーターはその入力を両方とも無視し、シャフトの長さでパラメーター化されたファルス印刷関数を返します。
_⁑≈≈≈⊃_=(\n->concat["8",take n$repeat '=',"D"])
main=interact$(0⁑≈≈≈⊃1).read.(!!2).words
awk '{printf"#%"$3"sp",p}'|tr \ \*
そう、
uptime
12:27μμ up 111 days, 2:36, 1 user, load averages: 0,07 0,03 0,00
uptime | awk '{printf"#%"$3"sp",p}'|tr ' ' '*'
#***************************************************************************************************************p
編集:
printf "#%`awk '{print $3}'`sp"|tr ' ' '*'
編集2:JBのコメント(\
代わりに使用''
)
"8$('='*(-split$input)[2])D"
少なくとも
echo 23:01 up 34 days, 7:30, 5 users, load averages: 0.23 0.27 0.24|powershell -file uptime.ps1
は正しい出力を生成するため、uptime
の出力を処理できるはずです。ただし、GNUWin32には、uptime
存在しないファイルから読み取ろうとする破損が含まれているため、テストできません(Unixツールを移植する人への注意:WindowsがUnixであり、同じ原則または慣習に従っていると想定しないでください。 Windowsでのブート時間を含むファイルはありません)。
' '/{(;}3*(\;~'='*8\'D'
main=getLine>>=putStr.('8':).(++"D").(`take`repeat '=').read.(!!2).words
#define r(a);read(0,x,a),
#define p ;putchar(
x[9];main(i){for(r(1)i<3;i+=*x==32)r(9)0
p'8');for(i=atoi((int)x+2);i--p'='))p'D');}
' '/3=~8\'='*'D'
read t u d w
echo -e '\t'|expand -t $d|sed 's/^/8/;s/ /=/g;s/$/B/;'
割り当ての手紙への呼び出し:
uptime | ./cg1570uptime-bar.sh
はるかに短い
このバリエーションでは:
echo -e '\t'|expand -t $3|sed 's/^/8/;s/ /=/g;s/$/B/;'
ルールに従って100%ではなく呼び出し:
./cg1570uptime-bar.sh $(uptime)
両方の時間での出力:
uptime && uptime | ./cg1570uptime-bar.sh
06:29:53 up 16 days, 21:03, 10 users, load average: 1.29, 1.34, 1.23
8================B
非日常のトリック:
read t u d w
読み取り06:29:53 = t、up = u、16 = d rest ... = w w
なしで、最後まですべてが$ dに入れられます。
expandは通常、タブを空白の量に変換するために使用され、8が気に入らない場合はパラメーターを取ります。
$ 3で3番目のパラメーターを取得することecho -e '\t'|expand -t $3|sed 's/ /=/g'
はさらに短くなりますが、呼び出しが必要であり、ルールの言葉に適合しません。
d:=A_TickCount//=8.64e+7
Send 8{= %d%}D
入力なし。結果はアクティブなウィンドウに送信されます。
ビルトインA_TickCount
は、コンピューターが再起動されてからのミリ秒数です。