가동 시간 진행률 표시 줄


13

출력을 구문 분석 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 개의 등호)

최단 답변이 이깁니다.


@ dmckee : 편집 주셔서 감사합니다. 그러나 사소한 철자 오류가 있습니다. '무정형'은 '해부학 적'으로 표시되어야합니다.
Joey Adams

@Joey : 그리고 "해부 적으로"철자가 틀 렸습니다. 감사.
dmckee --- 전 운영자 고양이

5
흠, 단지 nitpick, 알려진 끝이없는 (진행을 측정 할 수없는) 무언가에 대한 "진행 막대"는 이상하게 들립니다. 아마도 "바"이면 충분할까요?
houbysoft 2016 년

2
내 가동 시간은 27 분 :(
steenslag 22.24에

1
@userunknown이 질문의 첫 번째 버전과 관련이있었습니다. 편집 내용을 살펴보십시오 ...
Gareth

답변:


6

루비, 39

입력이 필요하지 않습니다 (쉘 아웃).

`w`=~/up (\d*)/;puts '8'+'='*$1.to_i+'D'

또는 stdin (40 자)에서 :

gets=~/up (\d*)/;puts '8'+'='*$1.to_i+'D'

문자열 보간과 문자 리터럴을 사용하여 2자를 줄이십시오.gets=~/up (\d*)/;puts "8#{?=*$1.to_i}D"
Michael Kohl

이 경우 문자 수는 보간과 연결을 사용하여 정확히 동일합니다.
david4dev

: 당신의 편집기에 붙여 복사 아니에요 twitpic.com/49413j
마이클 콜

'gets=~/up (\d*)/;puts "8#{"="*$1.to_i}D"'.length=="gets=~/up (\d*)/;puts '8'+'='*$1.to_i+'D'".length#true
david4dev

마지막 줄에 문자를 저장하십시오 : $> <<? 8 +? = * $ 1.to_i +? D
steenslag

5

배쉬, 71 자

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

글쎄, 글쎄 ... 내 것보다 너보다 크다.


명확하지 않은 경우 : 원하는 경우 원하는 언어로 껍질을 벗길 수 있습니다 (순수한 배쉬 일 필요는 없습니다). 질문을 명확히해야합니까?
Magnus Holm

5

-26 24 자

/p (\d+)/;say+8,"="x$1,D

이렇게 달렸다 :

$ uptime
 04:52:39 up 17 days, 11:27,  3 users,  load average: 0.21, 0.07, 0.02
$ uptime | perl -nE '/p (\d+)/;say+8,"="x$1,D'
8=================D

편집 : 마지막 'D'를 따옴표로 묶지 않았습니다.-고마워요 JB


D.
JB

4

하스켈, 88 자

종종 그렇듯이, Haskell은 다른 언어들 중 가장 극단적 인 골프 성을 제공하지는 않지만 문제의 근본 인 수학적 구조를 우아하게 표현할 수 있습니다. 이 분야에서의 주요 작업을 토대로 Holkins-Krahulik Approximation 연산자 의 Haskell 구현을 소개하고자합니다 . 간단히 말해, 작업자는 입력을 모두 무시하고 샤프트 길이로 매개 변수화 된 팔루스 인쇄 기능을 반환합니다.

_⁑≈≈≈⊃_=(\n->concat["8",take n$repeat '=',"D"])
main=interact$(0⁑≈≈≈⊃1).read.(!!2).words

4

Perl, 17 characters
이제 다음과 같이 말합니다.

say+8,"="x$F[2],D

수확량

uptime | perl -naE 'say+8,"="x$F[2],D'

였다:

print"8"."="x$F[2]."D"

수확량

]# uptime | perl -anle 'print"8"."="x$F[2]."D"'
8=========================D

(나는 슬프게도 "말하지 않는다")



3

35 자

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의 의견 ( \대신 사용 '')


1
2 개의 문자를 인용하는 대신 백 슬래시로 공간과 별표를 탈출하십시오.
JB

3

윈도우 PowerShell, 28

"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존재하지 않는 파일에서 읽으려고 시도 하는 깨진 파일이 포함되어 있기 때문에 테스트 할 수 없습니다 (유닉스 도구를 포팅하는 사람들에게주의하십시오 : Windows가 Unix라고 가정하고 동일한 원칙 또는 규칙을 준수하려고 시도하지 마십시오). Windows의 부팅 시간을 포함하는 파일이 없습니다).


3

공통 리스프, 84 자

(defun p(s)(write 8)(loop repeat(read-from-string(subseq s 9))do(write'=))(write'D))

가동 시간 문자열을 입력으로 사용합니다. 목록을 덮어 쓰는 솔루션 매핑이 더 짧아야 할 것 같지만, 그렇다면 목록을 작성할 수는 없습니다.


+1 여기에서 Common Lisp가 거의 사용되지 않습니다.
도우미 방법

3

GolfScript (24 자)

' '/{(;}3*(\;~'='*8\'D'

하스켈 (73 자)

main=getLine>>=putStr.('8':).(++"D").(`take`repeat '=').read.(!!2).words

C (131 자)

#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');}

귀하의 Golfscript는 24 개가 아닌 23 개 문자입니다. 또한 색인 (등호)으로 선택하여 16 개로 줄일 수 있습니다.' '/3=~8\'='*'D'
Cristian Lupascu

2

PHP, 62 자

<?$d=split(" ",`uptime`);echo 8;while($d[3]--)echo"=";echo"D";

입력이 필요하지 않으며 셸 아웃됩니다.


2

파이썬 (42)

print('8'+int(input().split()[2])*"="+'D')

참고 : Python 3은 총 문자 수를 줄이는 데 사용됩니다.


2

파이썬, 65 바이트

import sys
print '8'+'='*int(sys.stdin.readline().split()[2])+'D'

테스트:

echo '23:01  up 34 days,  7:30, 5 users, load averages: 0.23 0.27 0.24'|./time.py
8==================================D

1

PHP, 61

<?$n=split(' ',$argv[1]);$v=8;while($n[2]--)$v.'=';echo"$vD";

1

일반적인 리스프, 57 자

(구현 / OS 특정 shebang 제외)

#!/opt/local/bin/sbcl --script
(do()((eql(read-char)#\p)(format t"8~v,,,'=<~>D"(read))))

통증 이 반복되는 문자를 더 짧게 쓰는 방법에 대한 Dr. Pain의 대답 을 충족시키려는 시도를 바탕 으로합니다. 이것은 질문에 표시된 것처럼 파이프 라인에서 사용할 수 있습니다.

형식 문자열 은 인수로 지정된 너비 필드에서 문자를 사용하여 채워진 빈 문자열 ( ~<및 사이 ~>) 을 오른쪽 정렬하도록 지정 =합니다.


1

K, 35

-1"8",(("I"$(" "\:0:0)@3)#"="),"D";

.

$ uptime
17:21:47 up 242 days,  7:22, 35 users,  load average: 0.33, 0.34, 0.44
$ uptime | q t.k
8============================================================================ ...

0

배쉬 67 문자

read t u d w
echo -e '\t'|expand -t $d|sed 's/^/8/;s/ /=/g;s/$/B/;'

과제의 편지에 대한 호출 :

uptime | ./cg1570uptime-bar.sh

훨씬 더 짧은

단지 54 개의 문자 :

이 변형으로 :

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, 위로 = u, 16 = d 휴식 ... = w
없이 w를 읽으면 , 끝까지 모든 것이 $ d에 들어갑니다.

expand는 일반적으로 탭을 공백으로 변환하는 데 사용되며 8이 마음에 들지 않으면 매개 변수를 사용합니다.

$ 3 in echo -e '\t'|expand -t $3|sed 's/ /=/g'으로 3 번째 파라미터를 잡는 것은 훨씬 짧지 만 규칙의 단어에 맞지 않는 호출이 필요합니다.


0

bash / zenity 38 짧은 버전, 68 더 긴 버전

read c o d e
zenity --scale --value=$d --max-value=497 --text=uptime

짧은 버전은 $ d 후에 끝나고, 우리는 최대 값을 알고 유용한 텍스트를 갖고 싶어한다는 것을 더 오래 고려합니다.

가동 시간 표시로 스크린 샷 정력


0

Gema , 24 자

<D> d=8@repeat{$1;=}D;?=

샘플 실행 :

bash-4.4$ uptime
 18:35:31 up 13 days,  7:53, 16 users,  load average: 0.31, 0.85, 1.24

bash-4.4$ uptime | gema '<D> d=8@repeat{$1;=}D;?='
8=============D

0

오토 핫키 , 39 바이트

d:=A_TickCount//=8.64e+7
Send 8{= %d%}D

입력이 없습니다. 결과가 활성 창으로 전송됩니다.
내장 A_TickCount은 컴퓨터가 재부팅 된 후의 시간 (밀리 초)입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.