javascript - 装饰房间所需的壁纸卷(Javascript 拼图)

标签 javascript

我是 Javascript 新手,并且正在努力解决 CodeWars 中的这个难题。

约翰想用壁纸装饰房间。房间的尺寸为:宽度(w)、高度(h)、长度(l)。一卷壁纸的尺寸为 52cm 宽,10m 长。他想要的壁纸比覆盖房间所需的壁纸多 15%。以防出现错误或计算错误,因此他想购买比他需要的长度长 15% 的长度。

这是我想到的:

function wallpaper(l, w, h) {
var totalArea= ((2*(l*h))+(2*(w*h))*1.15);  //wall area to be covered
var rollsNeeded= (Math.ceil(totalArea/5.2));
return rollsNeeded;

一些示例文本案例:

Test.describe("wallpaper",function() {
Test.it("Basic tests",function() { 
  testing(wallpaper(6.3, 4.5, 3.29), 16);
  testing(wallpaper(7.8, 2.9, 3.29), 16);
  testing(wallpaper(6.3, 5.8, 3.13), 17);
  testing(wallpaper(6.1, 6.7, 2.81), 16);
})})enter code here

但是我的函数返回的值总是比测试用例少一。因此,我得到的不是 16,而是 15,而不是 17,而是 16。我不知道我是否在数学或代码上犯了错误......

其他说明: 所有卷(即使宽度不完整)均边对边放置 0 <= l, w, h( float ),w x h x l 可能为零 整数 r(滚动次数)始终小于或等于 20

最佳答案

这更像是一个数学问题,而不是代码问题,所以让我们先做正确的数学计算:

假设它是一个立方体形状的房间,它有四个墙壁,每个墙壁都是一个具有宽度和高度的矩形。此外,相对的墙壁应该完全相同。

因此,约翰想在所有四堵墙的整个区域上贴上壁纸。这大概是一个奇怪的房间,墙上没有门窗,但无论如何。我假设他通过天花板或地板进出。

一个房间有

  • w宽度
  • h高度
  • l长度

翻译为:

  • 两堵墙,使用宽度高度作为尺寸,面积为w*h
  • 另外两堵墙使用长度高度作为尺寸,其面积为l*h

这是总面积的公式:

[2*(l*h)] + [2*(w*h)]

为了获得约翰需要的额外 Material ,我们将 15% 添加到总数

{[2*(l*h)] + [2*(w*h)]} + {[2*(l*h)] + [2*(w*h)]}*0.15

{[2*(l*h)] + [2*(w*h)]}*1.15

您的代码执行以下计算

{[2*(l*h)] + [2*(w*h)]*1.15}

仅两堵墙的面积就增加了 15%。您希望(并且可能有意)将乘法放在外括号之外

function wallpaper(l, w, h) {
  var totalArea= ((2*(l*h))+(2*(w*h)))*1.15;  //corrected
  var rollsNeeded= (Math.ceil(totalArea/5.2));
  return rollsNeeded;
}

function testing(result, expected) {
  console.log("Expected: " + expected + 
              "\ngot: "+ result +
              "\nsuccess: " + (result === expected));
}

testing(wallpaper(6.3, 4.5, 3.29), 16);
testing(wallpaper(7.8, 2.9, 3.29), 16);
testing(wallpaper(6.3, 5.8, 3.13), 17);
testing(wallpaper(6.1, 6.7, 2.81), 16);

作为附录,您可以简化总面积公式

[2*(l*h)] + [2*(w*h)]
 = 2*l*h + 2*w*h
 = 2*h*(l + w)

这使得代码更短:

var totalArea = (2*h*(l + w))*1.15;  //simplified
//or          : 2*h*(l + w)*1.15
//or even     : 2.3*h*(l + w)

关于javascript - 装饰房间所需的壁纸卷(Javascript 拼图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39918712/

相关文章:

JavaScript - 在 onclick 函数中获取(this)参数的关联值

javascript - 服务的 Angular 动态属性

javascript - 如何通过 angularjs 方法访问视频流对象?

javascript - 使用 facebook fql 查询将所有帖子评论限制在限制范围内

javascript - Visual Studio 2017 Chrome JavaScript 调试 - 未达到断点

javascript - 如何反转 Highcharts 中金字塔图的系列顺序

javascript - JS中如何插入变量

javascript - 获取相同 id 的总值并使用 angularjs 将最终答案显示为 json 数组

javascript - 变量在定义之前被使用

javascript - 在 html 中单击 href