$30 off During Our Annual Pro Sale. View details »

【2018/07/29 TokyuRuby会議12】Project Eulerから生まれたワンライナーたち

【2018/07/29 TokyuRuby会議12】Project Eulerから生まれたワンライナーたち

2018/07/29にあったTokyuRuby会議12での発表スライドです
終盤の 'require不要のワンライナー' についての解説:http://expajp-tech.hatenablog.com/entry/2018/07/31/232737

スライドの23枚目、== 4となっている箇所は ==5の誤りです
申し訳ありません

Shu OGAWARA

July 29, 2018
Tweet

More Decks by Shu OGAWARA

Other Decks in Technology

Transcript

  1. Project Euler͔Βੜ·Εͨ ϫϯϥΠφʔͨͪ Shu OGAWARA (@expajp) TokyuRubyձٞ12 2018/07/29 Sun.

  2. ࣗݾ঺հ • Shu OGAWARA (@expajp) – Ruby/Railsྺ 1೥΄Ͳ – ग़਎ɿௗऔɺֶੜ࣌୅ɿਆށ

    – ϦϯΧʔζ – झຯͰ߹এஂʹॴଐ 1
  3. Project Eulerͬͯ஌ͬͯ·͔͢ʁ 2

  4. ϨΦϯϋϧτɾΦΠϥʔ (1707-1783) • εΠεͷ਺ֶऀ • ࿦จࣥච଎౓͸800ϖʔδ/೥ • ۀ੷͕๲େ͗ͯ͢ 100೥ܦͬͯ΋શू͕ະ׬ 3

  5. 4

  6. Project Euler • ίϯϐϡʔλͰղ͘਺ֶͷ໰୊ू – ϓϩίϯతͳ໰୊ – ͚ͩͲͬ͘͡Γղ͚Δ 5

  7. Project Euler • RubyͰͷ௅ઓऀ͸൪໨ʹଟ͍ – Python, C/C++, Java, C#, Haskellʹଓ͍ͯRuby

    – ϓϩϑΟʔϧʹݴޠΛॻ͍͍ͯΔਓͷ౷ܭ 6
  8. 7 ൃදऀ͸234Ґʢ95໰ղ౴ʣ

  9. 8 ൃදऀ͸234Ґʢ95໰ղ౴ʣ

  10. ϫϯϥΠφʔ • 1ߦͰॻ͘ϓϩάϥϜͷ͜ͱ – ʢࣗ෼ͷதͰ͸ʣϥΠϒϥϦಡࠐ͸ؚ·ͳ͍ • Rubyͷ୉ޣຯ • ͨͱ͑͹FizzBuzz 9

  11. ͜ͷൃදͷझࢫ • Project EulerΛ100໰ۙ͘·Ͱղ͍͖ͯͨͷ ͰɺϫϯϥΠφʔͰղ͚Δ໰୊ΛνϣΠε ΈΜͳʹղ͍ͯ΋Β͏ – ղ౴ྫΛ঺հ 10

  12. ͜ͷൃදͷझࢫ • Project EulerΛ100໰ۙ͘·Ͱղ͍͖ͯͨͷ ͰɺϫϯϥΠφʔͰղ͚Δ໰୊ΛνϣΠε ΈΜͳʹղ͍ͯ΋Β͏ – ղ౴ྫΛ঺հ 11 –

    ΈΜͳʹղ͍ͯ΋Β͏
  13. ਲͬ෷͏! લʹΞλϚ࢖͍·͠ΐ͏ʂ 12

  14. Please Get Ready 13 $ irb OR $ pry $

    rib OR
  15. Are You Ready ? 14

  16. ୈ̍໰ (30sec. Hint: 15sec.) 1, 2, …, 10 ʹ͍ͭͯ, ೋ৐ͷ࿨͸,

    12 + 22 + ... + 102 = 385 ࿨ͷೋ৐͸, (1 + 2 + ... + 10)2 = 3025 ࠩ͸ 3025 - 385 = 2640 ͱͳΔ. ಉ༷ʹͯ͠, 1, 2, …, 100ʹ͍ͭͯʮೋ৐ͷ࿨ʯͱʮ࿨ͷೋ৐ʯ ͷࠩΛٻΊΑ. ग़యɿProject Euler – Problem 6 15
  17. ୈ̍໰ (30sec. Hint: 15sec.) 1, 2, …, 10 ʹ͍ͭͯ, ೋ৐ͷ࿨͸,

    12 + 22 + ... + 102 = 385 ࿨ͷೋ৐͸, (1 + 2 + ... + 10)2 = 3025 ࠩ͸ 3025 - 385 = 2640 ͱͳΔ. ಉ༷ʹͯ͠, 1, 2, …, 100ʹ͍ͭͯʮೋ৐ͷ࿨ʯͱʮ࿨ͷೋ৐ʯ ͷࠩΛٻΊΑ. ग़యɿProject Euler – Problem 6 16 ώϯτɿRuby 2.4Ҏ߱ͳΒ Array#sum ͕࢖͑·͢
  18. ղ౴ྫ 17

  19. ୈ̎໰ (1min. Hint: 30sec.) 20ੈلʢ1901೥1݄1೔͔Β2000೥12݄31೔ʣதʹ ݄ͷॳΊ͕೔༵೔ʹͳΔͷ͸Կճ͋Δ͔ ͳ͓, ೥1݄1೔͸݄༵೔Ͱ͋Γ, 20ੈلʹ͓͍ͯ4ͷഒ਺ͷ೥͸ඞͣ͏Δ͏೥Ͱ͋Δ. ग़య:

    Project Euler - Problem 19 18
  20. ୈ̎໰ (1min. Hint: 30sec.) 20ੈلʢ1901೥1݄1೔͔Β2000೥12݄31೔ʣதʹ ݄ͷॳΊ͕೔༵೔ʹͳΔͷ͸Կճ͋Δ͔ ͳ͓, ೥1݄1೔͸݄༵೔Ͱ͋Γ, 20ੈلʹ͓͍ͯ4ͷഒ਺ͷ೥͸ඞͣ͏Δ͏೥Ͱ͋Δ. ग़య:

    Project Euler - Problem 19 19 ώϯτɿϥΠϒϥϦಡࠐ͸ϫϯϥΠφʔʹؚΈ·ͤΜ
  21. ղ౴ྫ 20  DateϥΠϒϥϦͷಡࠐ͕ඞཁ

  22. ࣮͸ɺϥΠϒϥϦͳ͠Ͱ΍Δํ๏΋͋Δ 21

  23. ղ౴ྫ2 22

  24. ղઆ͸ͦͷ͏ͪϒϩάʹͰ΋ॻ͖·͢! 23

  25. ·ͱΊ • 1SPKFDU &VMFS͸ͨͷ͍͠ • ϫϯϥΠφʔͰղ͘ͱ΋ͬͱͨͷ͍͠ • ࢓ࣄͷ߹ؒʹΞλϚͷମૢ͸͍͔͕Ͱ͔͢ 24

  26. Thank you for Listening!! 25 Ruby Logo(https://www.ruby-lang.org/ja/ ) CC BY-NC-SA

    2.5