JS | 教练,我想做习题7

🚀 前言

大家好呀,我是毛小悠,可以叫我二毛,在家中排行老二,是一名前端开发工程师。

本系列文章旨在通过练习来提高JavaScript的能力,一起愉快的做题吧。😀😀😀

以下每道题,二毛我都有尝试做一遍。建议限时训练,比如限定为半小时,如果半小时内想不出来,可以结合文章末尾的参考答案来思考。

求关注求点赞👍~~~😘😘😘

📖 题目1:皮特,面包师

皮特喜欢烤一些蛋糕。他有一些食谱和配料。不幸的是他数学不好。考虑到他的食谱,您能帮助他找出多少个蛋糕可以烘烤?

编写一个函数cakes(),该函数接受recipe (object)和可用成分(也是对象),并返回Pete可以烘烤的最大蛋糕数(整数)。为简单起见,没有数量单位(例如1磅面粉或200克糖只是1或200)。对象中不存在的成分可以视为0。

例子:

// must return 2cakes({
   flour: 500, sugar: 200, eggs: 1}, {
   flour: 1200, sugar: 1200, eggs: 5, milk: 200}); // must return 0cakes({
   apples: 3, flour: 300, sugar: 150, milk: 100, oil: 100}, {
   sugar: 500, flour: 2000, milk: 2000}); 

习题代码

function cakes(recipe, available) {
     // TODO: insert code}

📖 题目2:Directions Reduction

曾几何时,穿过古老的荒野山区西部,…

指示了一个人从一个点到另一个点的方向。方向为“北”,“南”,“西”,“东”。显然“ NORTH”和“ SOUTH”相反,“ WEST”和“ EAST”也相反。

去一个方向,马上回来向相反的方向是不必要的。由于这是狂野的西部,天气恶劣,水少,重要的是要为自己节省一些能量,否则您可能会口渴而死!

我如何聪明地穿越多山的沙漠。

给该男子的指示例子如下(取决于语言):

["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"].or{
    "NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST" };or[North, South, South, East, West, North, West]

您可以立即看到去“北”和然后立即去“南”是不合理的,最好留在原地!因此,任务是给该人员简化计划。在这种情况下,更好的计划是:

["WEST"]or{
    "WEST" }or[West]

其他例子:

在那里[“NORTH”, “SOUTH”, “EAST”, “WEST”],方向"NORTH" + "SOUTH"是向北并立即回到原点。

路径[“EAST”, “WEST”]现在变成,"EAST"并且"WEST"彼此抵消,因此最终结果是[](在Clojure中为nil)。

在[“ NORTH”,“ EAST”,“ WEST”,“ SOUTH”,“ WEST”,“ WEST”],“ NORTH”和“ SOUTH”中,不是直接相反的,但是在减少“ EAST”之后它们变成直接相反的和“ WEST”,因此整个路径可简化为[“ WEST”,“ WEST”]。

任务

编写一个函数dirReduc,该函数将接收字符串数组并返回删除了不必要方向的字符串数组(W <-> E或S <-> N并排)。

Haskell版本采用列出方向data Direction = North | East | West | South。

当路径简化为空时,Clojure版本返回nil。

Rust版本需要enum Direction {NORTH, SOUTH, EAST, WEST}。

习题代码

function dirReduc(arr){
     // ...}

答案

🍗 题目1的答案

参考答案1:

function cakes(recipe, ava
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值