프로그래밍/Ruby 26

문자열 거꾸로 하기 with Ruby

* 아래는 낮은 버전(1.8.6 이하)의 Ruby를 사용할 때 적용된다. 영문 문자열을 거꾸로 하기는 잘되지만, 한글 문자열을 거꾸로 하기는 잘 안된다. 그 이유는 Ruby가 모든 문자열을 바이트로 처리하기 때문이다. 예제 1. 한글 문자열을 잘 처리하지 못하는 예제 a = "Hello, world!" b = "안녕하세요?" puts "%s --> %s" % [a, a.reverse()] puts "%s --> %s" % [b, b.reverse()] #################### # Expected: # Hello, world! --> !dlrow ,olleH # 안녕하세요? --> ?요세하녕안 # Result: # Hello, world! --> !dlrow ,olleH # 안녕하세요? -->..

손으로 만드는 나눗셈 계산표 with Ruby

다음은 초등학교에서 배우는 나눗셈 계산표를 만들어주는 Ruby 소스 코드이다. 나눗셈 계산표를 완성하고 나서 약수, 배수 관계를 알려준다. # Filename: makeDivisionTable.rb # # Purpose: Make a division table in a handy written form. # # Execute: ruby makeDivisionTable.rb 12345 32 # ruby makeDivisionTable.rb 500210 61 # # Date: 2008/05/15 # Author: PH Kim [ pkim ((AT)) scripts.pe.kr ] def println(s) print "%s\n" % s end def printUsage() # println("Using: ru..

클래스 상속(subclassing) 예제 with Ruby

Ruby도 한 개의 소스 파일에 여러 개의 클래스가 존재해도 된다. 또 클래스명과 다른 파일명으로 저장해도 된다. Ruby 언어도 Java 언어 처럼 대소문자 구별을 엄격히 하므로 클래스를 선언하고 그 클래스로 객체 생성할 때 대소문자 구별을 꼭 지켜야 한다. 다음은 두 개의 클래스로 구성되어 있다. Parent는 부모 클래스이고 Child는 Parent에서 상속 받은 자식 클래스이다. # Filename: testSubclassing.rb class Parent @name def initialize(name) @name = name end def sayName() print("I am Parent, " + @name + "\n") end end class Child < Parent @name def i..

삼각형 출력 예제를 통한 여러 가지 소스 비교 with Ruby

콘솔에 삼각형 * * * * * * * * * * * * * * * ***************** 을 출력하는 Ruby 소스 코드를 작성해 보자. 이런 소스 코드의 작성은 학원이나 학교에서 프로그래밍 입문자에게 과제로 많이 주어지는 것 중의 하나이다. 코끼리를 보거나 만진 사람들이 저마다 그 생김새를 말할 때 제각기 다르게 표현할 수 있듯이 이런 소스 코드의 작성도 알고 보면 얼마든지 많은 방법이 있을 것이다. 여기서는 쉬운 코드 부터 작성해 보고 차츰차츰 소스를 바꾸어 가면서 Ruby 프로그래밍의 기초부분을 터득해 보기로 한다. 모든 소스 코드에서는 삼각형 출력 부분 담당 함수 printTriange() 를 별도로 구현하였다. 우선 첫번 째 예제는 Ruby의 컨솔 출력 함수 print() 의 사용법만..

7비트 ASCII 코드표 만들기 예제 with Ruby

ASCII(애스키)란 American Standard Code for Information Interchange의 줄임글로서, 영문자에 기초한 문자 인코딩이다. 이 문자 인코딩에는 C0 제어문자(C0 control character)도 포함되어 있다. ( 참고: ASCII - Wikipedia, the free encyclopedia ) 다음은 7bit ASCII 코드표를 만들어 보여주는 자바 소스 코드이다. 소스 코드 중에 진법변환에 필요한 함수 convertAtoI(string, radix) convertItoA(number, radix) 의 구현도 포함되어 있다. # Filename: makeAsciiTable.rb # Make a table of ascii codes. # # Execute: ru..

진법(radix) 표 만들기 예제 with Ruby

컴퓨터 프로그래밍에서 꼭 알아두어야 할 주요 진법은 당연히 10진법, 2진법, 8진법, 16진법이다. 다음은 0 에서 15 까지의 정수를 10진법, 2진법, 8진법, 16진법의 표로 만들어 보여주는 Ruby 소스 코드이다. 진법 변환에 필요한 함수 convertAtoI(string, radix) convertItoA(number, radix) 를 Ruby 코드로 자체 작성하여 사용하였다. (아래의 소스는 JRuby로 실행시켜도 된다.) # Filename: makeRadixTable.rb # Show the radix table with 10-, 2-, 8-, 16-radices. # # Execute: ruby makeRadixTable.rb # # Date: 2008/03/28 # Author: PH..

대화형 모드의 진법(radix) 변환 예제 with Ruby

다음은 대화형 모드(interactive mode)에서 진법 변환(radix conversion)하는 Ruby 소스 코드이다. 메뉴는 주메뉴 Command: (S)et radix, (A)bout, (Q)uit or E(x)it 와 부메뉴 SubCommand: 'main()' to goto Main menu, 'exit()' or 'quit()' to exit 로 구성되어 있으며, 진법 변환의 핵심은 Ruby의 string 클래스의 빌트인(build-in) 함수 string.to_i(radix)와 소스 코드에 자체 작성된 함수 itoa(number, radix)의 사용이다. val = s.to_i(srcRdx) ret = itoa(val, destRdx) 지원되는 진법은 2진법에서 36진법 까지이다. (J..

황금비율(golden ratio) 구하기 with Ruby or JRuby

다음은 이차방정식 x^2 - x - 1 = 0 의 양의 근 즉 황금비율(golden ratio)을 구하는 Ruby 애플리케이션 소스이다. 황금비율을 구하는 비례방정식은 1 : x = x : (x+1) 이며, 이를 이차방정식으로 표현한 것이 x^2 - x - 1 = 0 이다. See: http://en.wikipedia.org/wiki/Golden_ratio # Filename: testGoldenRatio.rb # 황금률(즉, 이차방정식 x^2 - x - 1 = 0 의 양의 근)을 계산한다. # # Execute: ruby testGoldenRatio.rb # # Date: 2008/03/24 # Author: PH Kim [ pkim (AT) scripts.pe.kr ] def printUsing() ..

현재 시각 알아내기 for Ruby and JRuby

현재 시각을 컨솔에 보여주는 간단한 애플리케이션의 Ruby 언어 소스 코드이다. UTC란 1970년 1월 1일 0시 0분 0초를 기준으로 하여 경과된 초 단위의 총 시간을 의미한다. * UTC(Universal Time Coordinated, 협정세계시, 協定世界時) =begin Filename: testCTime.rb Execute: ruby testCTime.rb =end def println(s) print("#{s}\n") end weekNames = [ "일", "월", "화", "수", "목", "금", "토" ] cNow = Time.now # 1970년 1월 1일 0시 0분 0초부터 시작하여 현재까지의 초 println("UTC: %d초" % cNow.to_i) # 현재 시각 표시: 200..

조립제법(Horner의 방법) 예제 for Ruby

다항식 p(x) 를 1차 다항식 x - a 로 나눌 때의 몫과 나머지를 구하는 조립제법을 Ruby 언어로 구현해 보았다. 조립제법은 일명 Horner의 방법이라고도 불리우는데, 이는 x = a 에서 다항식 p(x)의 값 p(a)을 계산하는 가장 빠른 알고리즘이기도 하다. p(x) = (x - a)q(x) + r 여기서 r은 나머지이며 r = p(a) 이다. 또 q(x)는 몫이다. [참고] * 온라인으로 조립제법 표 만들기 손으로 계산하는 조립제법 표 * 온라인으로 구하는 다항식의 도함수: 조립제법을 이용한 다항식의 도함수 아래의 소스파일은 Python용 소스파일 testSyntheticDivision.py 를 Ruby용으로 수정한 것이다. ruby 대신 jruby 로도 수정 없이 그대로 실행된다. =be..