준도 코키요시 with python/ruby ​​/Lua

13067 단어 파이썬루비루아
전 자료
- 솔직히 이것을 생각해내는 것이 대단하다.
- fizzbuzz보다 조금 복잡하기 때문에 언어 공부에 좋은 느낌.

파이썬 버전



최종 코드


  • 기본적인 곳에서 잘못되었으므로, 지적을 받았습니다.
  • 아울러 조금 리팩토링도 받았습니다.

  • 준이 4회
    def kiyoshi():
        zd=deque(list(),5)
        while ''.join(zd)!='ズンズンズンズンドコ':
            word=choice(['ズン','ドコ'])
            print(word)
            zd.append(word)
        print('キ・ヨ・シ!')
    

    다음 실수 코드



    이런 느낌?
    deque 사용하면 상당히 간단합니다.
    from collections import deque
    from random import choice
    def kiyoshi():
        zd=deque(list(),4)
        while True:
            if "".join(zd)=='ズンズンズンドコ':
                print("キ・ヨ・シ!")
                break
            else:
                word=choice(['ズン','ドコ'])
                print(word)
                zd.append(word)
    

    모니터링


    %matplotlib inline
    import pandas as pd
    def kiyoshi2():
        c=0
        zd=deque(list(),4)
        while True:
            if "".join(zd)=='ズンズンズンドコ':
                print("キ・ヨ・シ!")
                break
            else:
                word=choice(['ズン','ドコ'])
                print(word)
                zd.append(word)
                c+=1
        return c
    rslts=[kiyoshi2() for i in range(10000)]
    pd.DataFrame(rslts).hist(bins=30)
    



    원래의 알고리즘은 zun 카운터 를 사용하고 있는 모습.
    def kiyoshi_org():
        zun=0
        while True:
            word=choice(['ズン','ドコ'])
            print (word)
            if word == 'ズン':
                zun+=1
            elif zun>=3:
                print("キ・ヨ・シ!")
                break
            else: zun=0
    

    루비 버전



  • 여기 쪽이 스마트합니다.
  • Ruby 즐겁고 좋다.

  • kiyoshi.rb
    #! ruby -Ku
    require "kconv"
    
    def kiyoshi()
      zd=[]
      while zd.join!="ズンズンズンズンドコ" do
        word=["ズン","ドコ"].sample
        p word
        zd<<word
        zd.slice!(0) if zd.length>=6
      end
      p "キ・ヨ・シ!"
    end
    
    def kiyoshi_org()
      zun=0
      while true do
        word = ["ズン","ドコ"].sample
        p word
        if word == "ズン"
          zun+=1
        elsif zun <= 3
          zun = 0
        else
          p "キ・ヨ・シ!"
          break
        end
      end
    end
    
    kiyoshi()
    kiyoshi_org()
    

    지금은 do end 구문이 익숙하지 않다.

    Lua 버전


  • 처음으로 lua 썼다. 확실히 빠른 생각이 든다.
  • 배열의 연결과 같은 것을 찾았지만 발견되지 않았다.
  • 일본어 문자 깨지기 때문에, 우선 로마자로.

  • kiyoshi.lua
    function kiyoshi_org()
      words={"zun","doko"}
      zun=0
      while true do
        word = words[math.random (#words)]
        print (word)
        if word == "zun" then zun = zun + 1
        elseif zun < 4 then zun =0
        else break
        end
      end
      print "ki yo shi!"
    end
    
    
    function kiyoshi()
      words={"zun","doko"}
      zd={}
      while true do
        word = words[math.random (#words)]
        print (word)
        table.insert(zd, word)
        str=""
        for i,value in ipairs(zd) do
          str = str .. value
        end
        if #zd==5 then
          if str == "zunzunzunzundoko" then break
          else table.remove(zd,1)
          end
        end
      end
      print "ki yo shi!"
    end
    

    다음에 무엇을 할까 ...

    좋은 웹페이지 즐겨찾기