Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // https://www.reddit.com/r/dailyprogrammer/comments/aphavc/20190211_challenge_375_easy_print_a_new_number_by/
- /**
- #include <ctype.h>
- #include <stdio.h>
- int
- main(void)
- {
- int c;
- while (isdigit(c = getchar())) {
- int n = c - '0' + 1;
- if (n == 10)
- putchar('1');
- putchar('0' + n % 10);
- }
- putchar('\n');
- }
- */
- use std::{
- fs::File,
- io::{BufReader, BufWriter, Read, Write},
- os::unix::io::{FromRawFd, IntoRawFd},
- };
- fn main() {
- // https://www.reddit.com/r/rust/comments/9xedap/how_to_achieve_fast_stdinstdout_io_suitable_for/e9t4vle/
- let stdin = unsafe { File::from_raw_fd(0) };
- let stdout = unsafe { File::from_raw_fd(1) };
- let (mut reader, mut writer) = (BufReader::new(stdin), BufWriter::new(stdout));
- for byte in reader.by_ref().bytes() {
- let byte = byte.unwrap();
- if byte < b'0' || byte > b'9' {
- break;
- }
- let mut value = (byte - b'0') + 1;
- if value >= 10 {
- writer.write(&[b'1']).unwrap();
- value -= 10;
- }
- writer.write(&[value + b'0']).unwrap();
- }
- writer.write(&[b'\n']).unwrap();
- let _ = reader.into_inner().into_raw_fd();
- let _ = writer.into_inner().unwrap().into_raw_fd();
- }
Add Comment
Please, Sign In to add comment