แถบความคืบหน้าของสถานะการออนไลน์


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: ขอบคุณสำหรับการแก้ไข อย่างไรก็ตามมีข้อผิดพลาดการสะกดคำเล็กน้อย: 'a anotomically' ควรอ่าน 'an anatomically'
Joey Adams

@ โจอี้: และฉันก็สะกดคำว่า "กายวิภาค" ด้วย ขอบคุณ
dmckee --- ผู้ดูแลอดีตลูกแมว

5
อืมแค่ nitpick, "แถบความคืบหน้า" สำหรับสิ่งที่ไม่มีจุดสิ้นสุดที่รู้จัก (ดังนั้นคุณไม่สามารถวัดความก้าวหน้าของมันได้) ฟังดูแปลก ๆ อาจเป็นเพียงแค่ "บาร์" จะเพียงพอหรือไม่
houbysoft

2
เวลาทำงานของฉันคือ 27 นาที :(
steenslag

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
Michael Kohl

'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

Bash, 71 ตัวอักษร

a=`uptime` a=${a#*p } a=${a%% *};while((a--));do p==$p;done;echo I${p}I

ฉันไม่ว่ามากในการเปิดเผยของฉันGen uptimes บนอินเทอร์เน็ตดังนั้นฉันวาดภาพรั้วแทน มันนับตัวละครเดียวกัน คิดถึงการรีเซ็ตpระหว่างการโทร

ทุบตีบริสุทธิ์ 71 uptimeตัวอักษรรวมถึง

$ uptime
 23:35:12 up 159 days,  4:15, 15 users,  load average: 1.07, 0.63, 0.38

เอาล่ะทีนี้ดี ... ของฉันใหญ่กว่าของคุณ


ในกรณีที่ยังไม่ชัดเจน: คุณสามารถใช้ภาษาที่คุณชอบได้หากคุณต้องการ ฉันควรชี้แจงคำถามหรือไม่
แมกนัสโฮล์ม

5

Perl - 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

Haskell, 88 ตัวอักษร

Haskell ไม่ได้นำเสนอความสามารถในการเล่นกอล์ฟที่รุนแรงที่สุดของภาษาอื่น ๆ แต่มักจะอนุญาตให้มีการแสดงออกที่งดงามของโครงสร้างทางคณิตศาสตร์ที่เป็นพื้นฐานของปัญหา อาคารการทำงานน้ำเชื้อของพวกเขาในสนามนี้ผมมุ่งมั่นที่จะนำเสนอการดำเนินงาน Haskell ของผู้ประกอบการกิ้นส์-Krahulik ประมาณ สั้น ๆ ตัวดำเนินการจะละเว้นทั้งอินพุตและส่งคืนฟังก์ชันการพิมพ์ลึงค์ที่กำหนดพารามิเตอร์ด้วยความยาวเพลา

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

4

Perl, 17 ตัวอักษร
ตอนนี้พูดว่า:

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

Windows 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ที่พยายามอ่านจากไฟล์ที่ไม่มีอยู่ (หมายเหตุถึงผู้ที่ย้ายพอร์ตเครื่องมือ Unix: อย่าพยายามสมมติว่า 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'

Haskell (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 ของคุณคือ 23 ตัวอักษรไม่ใช่ 24 นอกจากนี้คุณสามารถย่อให้เหลือ 16 ตัวเลือกโดยใช้ดัชนี (เครื่องหมายเท่ากับ):' '/3=~8\'='*'D'
Cristian Lupascu


2

Python (42)

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

หมายเหตุ: Python 3 ใช้สำหรับลดจำนวนอักขระทั้งหมด


2

Python ขนาด 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

เสียงกระเพื่อมสามัญ 57 ตัวอักษร

(ไม่รวมการดำเนินงาน / เฉพาะ shebang)

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

ขึ้นอยู่กับความพยายามที่จะตอบสนองความต้องการคำตอบของดร. เพนสำหรับวิธีที่สั้นกว่าในการเขียนตัวละครซ้ำ หนึ่งนี้สามารถใช้ในท่อตามที่แสดงในคำถาม

(สตริงรูปแบบระบุให้จัดชิดขวาสตริงว่าง (ระหว่าง~<และ~>) ในฟิลด์ความกว้างที่ระบุโดยอาร์กิวเมนต์เพิ่มการใช้=อักขระ)


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

โดยปกติแล้วการขยายจะใช้เพื่อแปลแท็บเป็นจำนวนช่องว่างและรับพารามิเตอร์หากคุณไม่ชอบ 8

การหยิบพารามิเตอร์ที่ 3 ที่มีราคา $ 3 echo -e '\t'|expand -t $3|sed 's/ /=/g'นั้นสั้นกว่า แต่ต้องการการร้องขอไม่เหมาะกับคำของกฎ


0

bash / zenity 38 เวอร์ชั่นสั้น, 68 เวอร์ชั่นอีกต่อไป

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

รุ่นสั้นสิ้นสุดลงหลังจาก $ d ยิ่งคำนึงถึงอีกต่อไปแล้วเรารู้ว่ามีค่าสูงสุดและชอบที่จะมีข้อความที่เป็นประโยชน์:

ความคมชัดของภาพหน้าจอเป็นการแสดงสถานะการออนไลน์



0

AutoHotkeyขนาด 39 ไบต์

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

ไม่มีอินพุต ผลลัพธ์ถูกส่งไปยังหน้าต่างที่ใช้งานอยู่
บิวด์อินA_TickCountคือจำนวนมิลลิวินาทีนับตั้งแต่คอมพิวเตอร์รีบูท

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.