Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROGRAM DAY8
- INTEGER :: I,IERR,N,NLAYERS,P1LAYER,PART1
- INTEGER, ALLOCATABLE :: INPUT(:), IMAGE(:,:,:)
- CHARACTER(LEN=1) :: PIXEL,PART2CHAR(25,6)
- INTEGER :: PART2(25,6)
- ! Input
- OPEN(1,FILE="input.txt")
- N=0
- DO
- READ(1,'(A1)',ADVANCE="NO",IOSTAT=IERR)PIXEL
- IF(IERR.NE.0)EXIT
- N=N+1
- END DO
- REWIND(1)
- NLAYERS=N/(25*6)
- ALLOCATE(INPUT(N),IMAGE(25,6,NLAYERS))
- DO I=1,N
- READ(1,'(A1)',ADVANCE="NO")PIXEL
- READ(PIXEL,*)INPUT(I)
- END DO
- CLOSE(1)
- IMAGE=RESHAPE(INPUT,SHAPE(IMAGE))
- ! Part 1
- P1LAYER=MINLOC((/(COUNT(IMAGE(:,:,I).EQ.0),I=1,NLAYERS)/),DIM=1)
- PART1=COUNT(IMAGE(:,:,P1LAYER).EQ.1)*COUNT(IMAGE(:,:,P1LAYER).EQ.2)
- ! Part 2
- PART2=2
- DO I=1,NLAYERS
- WHERE(PART2.EQ.2)
- PART2=IMAGE(:,:,I)
- END WHERE
- END DO
- WHERE(PART2.EQ.1)
- PART2CHAR="#"
- ELSEWHERE
- PART2CHAR=" "
- END WHERE
- WRITE(*,'("Part 1: ",I0)') PART1
- WRITE(*,'(A)') "Part 2:"
- WRITE(*,'(6(25A1,/))')PART2CHAR
- END PROGRAM DAY8
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement