zoukankan      html  css  js  c++  java
  • thoughtworks编程题

    微博看到vczh分享的thoughtworks的一道题目https://www.jinshuju.net/f/EGQL3D,代码写完之后才得知这个公司并不是我想的那样美好。

    题目:

    FizzBuzzWhizz

    你是一名体育老师,在某次课距离下课还有五分钟时,你决定搞一个游戏。此时有100名学生在上课。游戏的规则是:


    1. 你首先说出三个不同的特殊数,要求必须是个位数,比如3、5、7。
    2. 让所有学生拍成一队,然后按顺序报数。
    3. 学生报数时,如果所报数字是第一个特殊数(3)的倍数,那么不能说该数字,而要说Fizz;如果所报数字是第二个特殊数(5)的倍数,那么要说Buzz;如果所报数字是第三个特殊数(7)的倍数,那么要说Whizz。
    4. 学生报数时,如果所报数字同时是两个特殊数的倍数情况下,也要特殊处理,比如第一个特殊数和第二个特殊数的倍数,那么不能说该数字,而是要说FizzBuzz, 以此类推。如果同时是三个特殊数的倍数,那么要说FizzBuzzWhizz。
    5. 学生报数时,如果所报数字包含了第一个特殊数,那么也不能说该数字,而是要说相应的单词,比如本例中第一个特殊数是3,那么要报13的同学应该说Fizz。如果数字中包含了第一个特殊数,那么忽略规则3和规则4,比如要报35的同学只报Fizz,不报BuzzWhizz。
     
    现在,我们需要你完成一个程序来模拟这个游戏,它首先接受3个特殊数,然后输出100名学生应该报数的数或单词。比如,
     
    输入
    3,5,7
    输出(片段)

    1
    2
    Fizz
    4
    Buzz
    Fizz
    Whizz
    8
    Fizz
    Buzz
    11
    Fizz
    Fizz
    Whizz
    FizzBuzz
    16
    17
    Fizz
    19
    Buzz 
    一直到100
     
    我用scheme实现的,scheme只学了些皮毛,当然在语法方面这个语言好像简单到几分钟就能学会;另外这道题感觉并不能展现scheme的强大。但之所以贴出来是因为最后的代码在可扩展、易读、长度等方面做了一些妥协动了一些脑筋:
    (define (x-involve-n x n)
    (let ((shift-x (truncate (/ x 10))))
    (cond ((= shift-x (/ (- x n) 10)) #t)
    ((= shift-x 0) #f)
    (else (x-involve-n shift-x n)))))
    
    (define (proc-x l1 l2)
    (lambda (x)
    (define (next la lb ret)
    (cond ((null? la) (if ret '() (list x)))
    ((integer? (/ x (car la))) (cons (car lb) (next (cdr la) (cdr lb) #t)))
    (else (next (cdr la) (cdr lb) ret))))
    (if (x-involve-n x (car l1)) (list (car l2)) (next l1 l2 #f))))
    
    (define (game l1)
    (let ((l2 '("Fizz" "Buzz" "Whizz")))
    (define (count-off n)
    (define (show x)
    (newline)
    (map display ((proc-x l1 l2) x))
    (count-off (+ x 1)))
    (if (< n 101) (show n) (newline)))
    (count-off 1)))
    

      

  • 相关阅读:
    JZOJ 3034. 【NOIP2012模拟10.17】独立集
    JZOJ 3035. 【NOIP2012模拟10.17】铁轨
    JZOJ 1259. 牛棚安排
    数位DP JZOJ 3316. 非回文数字
    JZOJ 3046. 游戏
    JZOJ 3013. 填充棋盘
    debian 安装oracle提供的java8
    java 汉字转拼音 PinYin4j
    debian ssh设置root权限登陆 Permission denied, please try again
    java并发下订单生成策略
  • 原文地址:https://www.cnblogs.com/fengbruce/p/3705480.html
Copyright © 2011-2022 走看看