File tree Expand file tree Collapse file tree 3 files changed +93
-0
lines changed
Expand file tree Collapse file tree 3 files changed +93
-0
lines changed Original file line number Diff line number Diff line change 1+ program P10799
2+ implicit none
3+ character (len = 100000 ) :: parens
4+ integer :: stack, sum
5+ integer :: i
6+
7+ read * , parens
8+ sum = 0
9+ stack = 0
10+ do i = 1 , len_trim (parens)
11+ if (parens(i:i) == ' (' ) then
12+ stack = stack + 1
13+ else if (parens(i:i) == ' )' ) then
14+ stack = stack - 1
15+ if (parens((i - 1 ):(i - 1 )) == ' (' ) then
16+ sum = sum + stack
17+ else
18+ sum = sum + 1
19+ end if
20+ end if
21+ end do
22+ write (* , ' (I0)' ) sum
23+ end program P10799
Original file line number Diff line number Diff line change 1+ use std:: io:: { stdin, BufRead } ;
2+
3+ fn to_alpha ( mut column : u32 ) -> String {
4+ let mut buffer = Vec :: new ( ) ;
5+ while column > 0 {
6+ column -= 1 ;
7+ buffer. push ( ( column % 26 ) as u8 + b'A' ) ;
8+ column /= 26 ;
9+ }
10+ buffer. reverse ( ) ;
11+ unsafe { String :: from_utf8_unchecked ( buffer) }
12+ }
13+
14+ fn main ( ) {
15+ let stdin = stdin ( ) ;
16+ let handle = stdin. lock ( ) ;
17+ for line in handle. lines ( ) . flatten ( ) {
18+ let mut splitter = line. trim_end ( ) . split ( char:: is_alphabetic) . skip ( 1 ) ;
19+ let row = splitter. next ( ) . unwrap ( ) ;
20+ let column = splitter. next ( ) . unwrap ( ) . parse :: < u32 > ( ) . unwrap ( ) ;
21+ if row == "0" && column == 0 {
22+ break ;
23+ } else {
24+ println ! ( "{}{}" , to_alpha( column) , row) ;
25+ }
26+ }
27+ }
Original file line number Diff line number Diff line change 1+ const readline = require ( 'readline' )
2+ const interface = readline . createInterface ( process . stdin )
3+
4+ const keys = new Map ( [
5+ [ 'A' , 0 ] ,
6+ [ 'A#' , 1 ] ,
7+ [ 'Bb' , 1 ] ,
8+ [ 'B' , 2 ] ,
9+ [ 'Cb' , 2 ] ,
10+ [ 'B#' , 3 ] ,
11+ [ 'C' , 3 ] ,
12+ [ 'C#' , 4 ] ,
13+ [ 'Db' , 4 ] ,
14+ [ 'D' , 5 ] ,
15+ [ 'D#' , 6 ] ,
16+ [ 'Eb' , 6 ] ,
17+ [ 'E' , 7 ] ,
18+ [ 'Fb' , 7 ] ,
19+ [ 'E#' , 8 ] ,
20+ [ 'F' , 8 ] ,
21+ [ 'F#' , 9 ] ,
22+ [ 'Gb' , 9 ] ,
23+ [ 'G' , 10 ] ,
24+ [ 'G#' , 11 ] ,
25+ [ 'Ab' , 11 ] ,
26+ ] )
27+
28+ const keys_rev = 'A A# B C C# D D# E F F# G G#' . split ( ' ' )
29+
30+ let line_num = 0
31+ let sequence
32+ interface . on ( 'line' , line => {
33+ if ( line_num % 2 === 0 ) {
34+ if ( line === '***' ) {
35+ process . exit ( 0 )
36+ }
37+ sequence = line . split ( ' ' ) . map ( s => keys . get ( s ) )
38+ } else {
39+ let key_move = Number ( line )
40+ console . log ( sequence . map ( key => keys_rev [ ( ( key + key_move ) % 12 + 12 ) % 12 ] ) . join ( ' ' ) )
41+ }
42+ line_num += 1
43+ } )
You can’t perform that action at this time.
0 commit comments