csharp高级练习题:多边形方向【难度:4级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练

csharp高级练习题:多边形方向【难度:4级】:

问题

你的任务很简单:找出给定的多边形具有顺时针或逆时针定位.

分将被表示为{X:X,Y:Y}笛卡尔坐标.

多边形将其在多边形的顶点点的数组.在数组矩阵连接最后一个点返回到第一点.

如果多边形的方向为顺时针,否则为假的函数将返回true.

你可以假设:

1.多边形* * 将是一个有效的多边形.也就是说,它至少有三个点,正好有两个边缘将在每个顶点见面.
2.在试验中,点永远不会正好落在多边形的边缘.

测试

为了帮助您可视化的测试案例,有预装的方法绘制多边形:

showAndTest(,定向)//这也自动调用Test.expect

Kata.PolyOrientation()

所以,如果你拨打:

showAndTest([{X:0,Y:5},{X:5,Y:-5},{X:-5,Y:-5}],TRUE);

=新列表<的PointF> {
新的PointF(0,5),
新的PointF(5,-5),
新的PointF(-5,-5)
};
Console.WriteLine(KataTestHelper.DrawTest(,));

然后你会看到:

<多边形点= “100.5,50.5 150.5,150.5 50.5,150.5” 行程= “蓝色” 填充= “蓝色” 填充不透明度= “0.08”> </多边形>
        <克字体大小=“12"字体=“无衬线"填充=“黑"行程=“无”>
            <文本X = “100.5” Y = “50.5” DY = " - 5” DX = “5”> A(0,5)</文本>
            <文本X = “150.5” Y = “150.5” DY = " - 5” DX = “5”> B(5,-5)</文本>
            <文本X = “50.5” Y = “150.5” DY = " - 5” DX = “5”> C(-5,-5)</文本>
            <文本X = “100.5” Y = “100.5” DY = " - 5" DX = “5”> 0 </文本>
            <文本X = “184.5” Y = “100.5” DY = " - 5" DX = “5”> X </文本>
            <文本X = “100.5” Y = “14.5” DY = " - 5" DX = “5”>ý</文本>
        的
        <圆CX = “100.5” CY = “100.5” R = “2” 填充= “红色”> </圈>
        <线X1 = “5.5” Y1 = “100.5” X2 = “184.5” Y2 = “100.5” 标记结束= “URL(#triangle)” 行程= “红色” 笔划宽度= “1”> </线>
        <线X1 = “100.5” Y1 = “194.5” X2 = “100.5” Y2 = “14.5” 标记结束= “URL(#triangle)” 行程= “红色” 笔划宽度= “1”> </线>
        <标记ID = “三角形” 视框= “0 0 10 10” REFX = “0” REFY = “5” markerUnits = “strokeWidth” markerWidth = “10” markerHeight = “30” 东方= “自动”>
            <路径d = “M 0 0 L - 10 5 L 0 10 Z”> </路径>
        </标记"
        <路径d ="M18,4l-4-4v2C6.281,2,0,8.281,0,16c0,3.746,1.461,7.266,4.117,9.914l2.82-2.832 C5.047,21.191,4,18.676,4 ,16C4,10.484,8.484,6,14,6v2L18,4z"的风格= "填充:#4E4E50;"变换= “翻译(170 5)”/>
    
    的方向:顺时针</跨度>

如果你拨打:

showAndTest([{X:-5,Y:5},{X:-5,Y:-5},{X:5,Y:-5},{X:5,Y:5}],) ;

=新列表<的PointF> {
  新的PointF(-5,5),
  新的PointF(-5,-5),
  新的PointF(5,-5),
  新的PointF(5,5)
};
Console.WriteLine(KataTestHelper.DrawTest(,));

然后你会看到:

<多边形点=" 50.5,50.5 50.5,150.5 150.5,150.5 150.5,50.5" 行程= “蓝色” 填充= “蓝色” 填充不透明度= “0.08”> </多边形>
        <克字体大小=“12"字体=“无衬线"填充=“黑"行程=“无”>
            <文本X = “50.5” Y = “50.5” DY = " - 5” DX = “5”> A(-5,5)</文本>
            <文本X = “50.5” Y = “150.5” DY = " - 5” DX = “5”> B(-5,-5)</文本>
            <文本X = “150.5” Y = “150.5” DY = " - 5” DX = “5”> C(5,-5)</文本>
            <文本X = “150.5” Y = “50.5” DY = " - 5" DX = “5”> d(5,5)</文本>
            <文本X = “100.5” Y = “100.5” DY = " - 5" DX = “5”> 0 </文本>
            <文本X = “184.5” Y = “100.5” DY = " - 5" DX = “5”> X </文本>
            <文本X = “100.5” Y = “14.5” DY = " - 5" DX = “5”>ý</文本>
        的
        <圆CX = “100.5” CY = “100.5” R = “2” 填充= “红色”> </圈>
        <线X1 = “5.5” Y1 = “100.5” X2 = “184.5” Y2 = “100.5” 标记结束= “URL(#triangle)” 行程= “红色” 笔划宽度= “1”> </线>
        <线X1 = “100.5” Y1 = “194.5” X2 = “100.5” Y2 = “14.5” 标记结束= “URL(#triangle)” 行程= “红色” 笔划宽度= “1”> </线>
        <标记ID = “三角形” 视框= “0 0 10 10” REFX = “0” REFY = “5” markerUnits = “strokeWidth” markerWidth = “10” markerHeight = “30” 东方= “自动”>
            <路径d = “M 0 0 L - 10 5 L 0 10 Z”> </路径>
        </标记"
        <路径d ="M18,4l-4-4v2C6.281,2,0,8.281,0,16c0,3.746,1.461,7.266,4.117,9.914l2.82-2.832 C5.047,21.191,4,18.676,4 ,16C4,10.484,8.484,6,14,6v2L18,4z"的风格= "填充:#4E4E50;"变换= “翻译(190,5)规模(-1,1)”/>
    
    的定位:逆时针</跨度>

附图窗口是20×20个单位宽和以原点为中心.

积分

由于osuushi,用于输出安排想法.

编程目标:

using System.Collections.Generic;
using System.Drawing;
public static class Kata
{
  public static bool PolyOrientation(List Poly)
  {
    // do your magic
    return true;
  }
}


测试样例:

using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Drawing;
[TestFixture]
public class PolyOrientationTest
{
  [Test]
  public void BasicTests()
      new PointF(0, 5),
      new PointF(5, -5),
      new PointF(-5, -5)
    };
    Console.WriteLine(KataTestHelper.DrawTest(poly, true));
    var orientation = Kata.PolyOrientation(poly);
    Assert.AreEqual(true, orientation);


最佳答案(多种解法):

点击查看答案

更多关联题目:

csharp高级练习题:让我们玩飞镖!【难度:3级】–景越C# 经典编程题库,不同难度C# 练习题,适合自学C# 的新手进阶训练
csharp基础练习题:藏头诗的读者【难度:1级】–景越C# 经典编程题库,不同难度C# 练习题,适合自学C# 的新手进阶训练

免责申明

本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars.com/
https://www.codewars.com/kata/polygon-orientation

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值