우리의 새로운 은행은 현금 거래 시스템이 필요하지만 문제가 있습니다. 서버에는 수백 바이트의 공간 만 남아 있으므로 매우 작은 코드를 작성해야합니다.
데이터 베이스
고맙게도 우리 데이터베이스는 매우 단순하며 (은행 회장의 남학생이 만든 것입니다), 지금까지는 고객이 거의 없습니다.
파일 Bank.data
은 :
Account Firstname Lastname Balance Date
123 Maree Jones 346.22 2014-12-13
035 Thomas Breakbone 3422.02 2015-01-03
422 Henrietta Throsby-Borashenko 277847.74 2014-11-21
501 Timmy Bongo 7.95 2014-11-04
105 William Greene 893.00 2015-01-06
300 Mary Galoway 1228.73 2014-12-28
203 Samantha Richardson 2055.44 2014-11-01
151 Bruce Wayne 956119.66 2014-10-09
166 Chip Stonesmith 266.71 2014-12-15
888 Alexandria Cooper 1299.82 2014-12-30
응용 사양
은행 애플리케이션은 다음 명령을 구현해야합니다.
open <firstname> <lastname>
고유 한 3 자리 계좌 번호를 인쇄하는 새 계정을 작성 (열기)합니다.
withdraw <account> <amount>
계좌에서 금액을 인출합니다.
deposit <account> <amount>
계좌에 입금액.
close <account>
비어있는 경우 계정을 닫습니다.
report <fieldname>
필드 이름별로 정렬 된 데이터베이스 보고서를 인쇄하십시오. 필드 이름 열을 첫 번째 위치로 이동하십시오. 각 열 너비는 하나의 공백으로 구분 된 가장 넓은 데이터 및 필드 이름 너비의 최대 값입니다. 첫 번째 줄은 필드 제목입니다. 잔액은 선행 $
기호로 정당화되어야합니다 .
print <account>
필드 이름을 인쇄하고 보고서와 같은 형식의이 계정에 대한 레코드를 기록하십시오.
레코드가 변경 될 때마다 레코드의 Date
필드가 현재 날짜로 업데이트되어야합니다.
명령을 기다릴 때 응용 프로그램에 "#"프롬프트가 표시됩니다. 명령이 실패하면 (예 : 알 수없는 계정에서의 조작 또는 자금 부족) 응용 프로그램은 정보 오류 메시지 "실패"를 인쇄해야합니다. 전 세계적으로 파일에서 동시에 작동하는 많은 텔러 프로그램이 있으므로 프로그램은 각 변경 후에 파일에 변경 사항을 파일에 다시 기록하고 각 명령의 파일에서 읽어야합니다 (파일 잠금이 필요하지 않으므로 성능이 저하 될 수 있음).
편집 : 문자열 필드는 공백이없는 간단한 ASCII (az, AZ,-)이며 금액은 항상 0.00에서 1000000000.00 (10 억) 사이이며 소수점 이하 두 자리는 센트를 나타냅니다. 날짜는 각 지점에서 현지 시간으로 표시됩니다 (간단한 해결책이지만 나중에 약간의 문제가 발생할 수 있음).
산출
답변이 사양을 충족한다는 것을 입증해야합니다. 다음 명령을 처리 한 후 프로그램의 출력을 첨부하십시오.
report Balance
open Clark Kent
print 001
deposit 001 4530
withdraw 105 893
close 105
report Date
Bank.data
위에 제공된 파일 의 원본을 사용해야합니다 .
채점
이것은 코드 골프이므로 점수는 코드의 바이트 수입니다. 표준 허점은 금지되어 있습니다.
<firstname>
및 <lastname>
및의 범위와 정밀도 <amount>
? (예 : <amount>
항상 소수점 이하 두 자리 만 있으면 최적화가 가능할 수 있습니다. 또는 대부분의 통화는 소수점 이하 세 자리를 사용하는 중동 지점에서 프로그램을 사용할 수 있습니다).
<firstname>
및 <lastname>
모두에서만 사용 a-zA-Z
, 그러나 TSV를 사용하여 허용 탭 문자를 포함 결코 심지어 간단한 문장을. ASCII 문자 시퀀스 일 수있는 경우, 한 문자 분리 문자 이외의 다른 형태의 이스케이프 또는 분리 문자가 필요합니다.