ความท้าทาย:
สร้างแผนภูมิ ASCII ของคำที่ใช้บ่อยที่สุดในข้อความที่กำหนด
กฎระเบียบ:
- ยอมรับ
a-z
และA-Z
(ตัวอักษร) เป็นส่วนหนึ่งของคำเท่านั้น - ไม่สนใจเคส (
She
==she
สำหรับจุดประสงค์ของเรา) - ไม่ต้องสนใจคำต่อไปนี้ (ฉันรู้โดยนัย)
the, and, of, to, a, i, it, in, or, is
การชี้แจง: การพิจารณา
don't
: สิ่งนี้จะถูกนำมาเป็น 'คำศัพท์' ที่ต่างกัน 2 รายการในช่วงa-z
และA-Z
: (don
และt
)เป็นทางเลือก (มันสายเกินไปที่จะเปลี่ยนแปลงข้อกำหนดอย่างเป็นทางการในตอนนี้) คุณอาจเลือกที่จะทิ้งคำว่า 'word' ตัวอักษรตัวเดียวทั้งหมด (ซึ่งอาจทำให้การเพิกเฉยรายการเพิกเฉยสั้นลง)
แยกวิเคราะห์ที่กำหนดtext
(อ่านไฟล์ที่ระบุผ่านอาร์กิวเมนต์บรรทัดคำสั่งหรือ piped ใน; เข้าใจus-ascii
) และสร้างเราword frequency chart
ด้วยคุณสมบัติดังต่อไปนี้:
- แสดงแผนภูมิ (ดูตัวอย่างด้านล่าง) สำหรับคำที่พบบ่อยที่สุด 22 คำ (เรียงลำดับตามความถี่จากมากไปน้อย)
- แถบ
width
แสดงจำนวนการเกิดขึ้น (ความถี่) ของคำ (ตามสัดส่วน) ต่อท้ายหนึ่งช่องว่างและพิมพ์คำ - ตรวจสอบให้แน่ใจว่าแถบเหล่านี้ (บวก space-word-space) พอดีเสมอ:
bar
+[space]
+word
+[space]
ควรเสมอ <=80
ตัวอักษร (ตรวจสอบให้แน่ใจว่าคุณคำนึงถึงแถบที่แตกต่างและความยาวของคำที่เป็นไปได้: เช่น: คำทั่วไปที่สอง ครั้งแรกในขณะที่ไม่แตกต่างกันมากในความถี่) ขยายความกว้างของแถบให้ใหญ่สุดภายในข้อ จำกัด เหล่านี้และปรับขนาดแท่งให้เหมาะสม (ตามความถี่ที่แสดง)
ตัวอย่าง:
ข้อความตัวอย่างสามารถพบได้ที่นี่ ( การผจญภัยของอลิซในแดนมหัศจรรย์โดย Lewis Carroll )
ข้อความเฉพาะนี้จะให้ผลแผนภูมิดังต่อไปนี้:
_________________________________________________________________________ | _________________________________________________________________________ | เธอ | _______________________________________________________________ | คุณ | ____________________________________________________________ | กล่าว | ____________________________________________________ | อลิซ | ______________________________________________ | เป็น | __________________________________________ | ที่ | ___________________________________ | เช่น | _______________________________ | เธอ | ____________________________ | กับ | ____________________________ | ที่ | ___________________________ | s | ___________________________ | เสื้อ | _________________________ | บน | _________________________ | ทั้งหมด | ______________________ | นี้ | ______________________ | สำหรับ | ______________________ | มี | _____________________ | แต่ | ____________________ | เป็น | ____________________ | ไม่ | ___________________ | พวกเขา | __________________ | ดังนั้น
สำหรับข้อมูลของคุณ: ความถี่เหล่านี้เป็นแผนภูมิด้านบนที่สร้างขึ้น:
[('เธอ', 553), ('คุณ', 481), ('พูดว่า', 462), ('อลิซ', 403), ('คือ', 358), ('นั่น ', 330), (' as ', 274), (' her ', 248), (' with ', 227), (' at ', 227), (' s ', 219), (' t ' , 218), ('บน', 204), ('ทั้งหมด', 200), ('สิ่งนี้', 181), ('สำหรับ', 179), ('มี', 178), (' แต่ ', 175), (' be ', 167), (' not ', 166), (' พวกเขา ', 155), (' so ', 152)]
ตัวอย่างที่สอง (เพื่อตรวจสอบว่าคุณใช้ข้อมูลจำเพาะทั้งหมดหรือไม่):
แทนที่ทุกครั้งที่เกิดขึ้นในไฟล์Alice in Wonderland ที่you
ลิงก์ด้วย:superlongstringstring
________________________________________________________________ | ________________________________________________________________ | เธอ | _______________________________________________________ | superlongstringstring | _____________________________________________________ | กล่าว | ______________________________________________ | อลิซ | ________________________________________ | เป็น | _____________________________________ | ที่ | ______________________________ | เช่น | ___________________________ | เธอ | _________________________ | กับ | _________________________ | ที่ | ________________________ | s | ________________________ | เสื้อ | ______________________ | บน | _____________________ | ทั้งหมด | ___________________ | นี้ | ___________________ | สำหรับ | ___________________ | มี | __________________ | แต่ | _________________ | เป็น | _________________ | ไม่ | ________________ | พวกเขา | ________________ | ดังนั้น
ผู้ชนะ:
วิธีแก้ปัญหาที่สั้นที่สุด (ตามจำนวนตัวอักษรต่อภาษา) มีความสุข!
แก้ไข : ตารางสรุปผลลัพธ์จนถึงขณะนี้ (2012-02-15) (เพิ่มโดยผู้ใช้ Nas Banov):
ภาษาที่ผ่อนคลายอย่างเข้มงวด ========= ======= ====== GolfScript 130 143 Perl 185 Windows PowerShell 148 199 Mathematica 199 ทับทิม 185 205 Unix Toolchain 194 228 Python 183 243 Clojure 282 สกาล่า 311 Haskell 333 Awk 336 R 298 Javascript 304 354 Groovy 321 Matlab 404 C # 422 Smalltalk 386 PHP 450 F # 452 TSQL 483 507
ตัวเลขแสดงความยาวของคำตอบสั้นที่สุดในภาษาเฉพาะ "เข้มงวด" หมายถึงโซลูชันที่ใช้ข้อมูลจำเพาะอย่างสมบูรณ์ (ดึง|____|
แท่งปิดแถบแรกด้านบนด้วย____
บรรทัดบัญชีสำหรับความเป็นไปได้ของคำยาวที่มีความถี่สูง ฯลฯ ) "ผ่อนคลาย" หมายถึงสิทธิบางอย่างที่ถูกทำให้สั้นลงเพื่อแก้ปัญหา
มีเพียงโซลูชันที่สั้นกว่า 500 ตัวเท่านั้น รายการภาษาจะเรียงตามความยาวของโซลูชัน 'เข้มงวด' 'Unix Toolchain' ใช้เพื่อแสดงถึงวิธีการแก้ปัญหาต่าง ๆ ที่ใช้ * nix shell แบบดั้งเดิมพร้อมด้วยเครื่องมือหลายอย่าง (เช่น grep, tr, sort, uniq, perl, awk)
s
และt
เป็นตัวแทน