เคล็ดลับการเล่นกอล์ฟใน Haxe


12

คุณมีเคล็ดลับอะไรสำหรับการเล่นกอล์ฟในHaxe ? ฉันกำลังมองหาความคิดเห็นที่สามารถนำไปใช้กับปัญหารหัสกอล์ฟและอย่างน้อยก็ค่อนข้างเฉพาะเจาะจงกับ Haxe (เช่น "ลบความคิดเห็น" ไม่ใช่คำตอบ)

กรุณาโพสต์หนึ่งเคล็ดลับต่อคำตอบ

Haxe สามารถเรียกใช้ออนไลน์ได้ที่นี่ !


ฉันเคยใช้ Haxe มาก่อน แต่เมื่อฉันเริ่มเล่นกอล์ฟฉันไม่ได้ใช้มันมากนัก ฉันจะต้องลองใช้มันเพื่อเล่นกอล์ฟ ...
ETHproductions

@ETHproductions เหมือนกันที่นี่ วันนี้ฉันเล่นกอล์ฟกับมันสองครั้งและสนุกมาก มันมีความสามารถในการเล่นกอล์ฟที่ดีด้วย (ตัวอย่าง) รายการความเข้าใจและตัววนซ้ำของมันดังนั้นฉันจึงตัดสินใจเปิดคำถามขึ้นเพื่อดูว่าใครมีเคล็ดลับในการแบ่งปัน
Yytsi

คำตอบ:


8

การแก้ไขสตริง

Haxe รองรับการแก้ไขสตริงในสตริงที่มีเครื่องหมายคำพูดเดี่ยว เช่นเดียวกับสตริงแม่แบบใน JavaScript ES6 คุณสามารถรวมนิพจน์ในสตริงด้วย${...}:

trace('2 + 2 = ${2 + 2}');

อย่างไรก็ตามต่างจาก ES6 คุณสามารถละเว้นวงเล็บปีกกาเมื่อนิพจน์เป็นตัวแปรเดียว:

var x = 2 + 2;
trace('2 + 2 = $x');

2 + 2 = 4ทั้งสองคนนี้พิมพ์ตัวอย่าง


7

ความเข้าใจของอาเรย์

Haxe รองรับความเข้าใจของอาเรย์:

trace([for (i in 0...5) i]); // Prints 0,1,2,3,4

แตกต่างจากภาษาอื่น ๆ อีกมากมายคุณยังสามารถใช้whileในความเข้าใจ:

var i = 5;
trace([while (i > 0) i--]); // Prints 5,4,3,2,1

สิ่งนี้มีประโยชน์มากเมื่อคุณไม่รู้ว่าคุณต้องการอาเรย์นานแค่ไหน

คุณยังสามารถโซ่for, whileและifงบ:

trace([for (x in ['A','B','C','D'])
       for (y in ['x','y'])
       if (x + y != "Cx")
       x + y
]); // Prints Ax,Ay,Bx,By,Cy,Dx,Dy

ว้าว. ฉันจะลบคำตอบของฉัน ฉันสร้างคำตอบเดียวกันโดยแท้จริงเพียงไม่กี่นาที นอกจากนี้คุณอาจต้องการทราบว่าจริง ๆ แล้วพิมพ์วงเล็บเหลี่ยมรอบรายการดังนั้นผู้อ่านจะไม่สับสนเนื่องจากความท้าทายบางอย่างต้องใช้รูปแบบผลลัพธ์ที่เข้มงวด
Yytsi

@TuukkaX ฮ่าฮ่ามันเกิดขึ้นบางครั้ง :) ฉันจะรวมหนึ่งในตัวอย่างของคุณไว้ที่นี่ถ้าคุณไม่รังเกียจ และ try.haxe.org ดูเหมือนจะไม่พิมพ์วงเล็บเหลี่ยม ...
ETHproductions

อันที่คำนวณสินค้าคาร์ทีเซียนนั้นเรียบร้อย ผมคิดว่าจะเป็นยังดีที่จะโพสต์ของคุณ :)
Yytsi

6

ผู้ประกอบการช่วง

Haxe มีตัวดำเนินการช่วง...ซึ่งสามารถใช้เพื่อสร้างช่วงของจำนวนเต็ม ตัวอย่างเช่นแทนที่จะเป็น:

var i = 0;
while (i < 10) trace(i++);

คุณสามารถทำได้:

for (i in 0...10) trace(i++);

เฉพาะสำหรับx...y:

  • xและyต้องเป็นทั้ง Ints
  • xyไม่สามารถมีขนาดใหญ่กว่า
  • ส่งคืนวัตถุ IntIteratorซึ่งสามารถใช้ในสถานที่เดียวกับ Iterable ใด ๆ

1

เรียกใช้คำสั่งแบบมีเงื่อนไข

เห็นได้ชัดว่าคุณสามารถทำงานอะไรก็ได้ตามเงื่อนไขด้วยif:

if(n>5)doSomething(n);

อย่างไรก็ตามหากคุณมีคำสั่งเดียวดังกล่าวข้างต้นคุณสามารถใช้ตัวดำเนินการเงื่อนไขที่ประกอบไปด้วยเพื่อบันทึกไบต์:

n>5?doSomething(n):0;

บางครั้งคุณสามารถบันทึกไบต์อื่นได้ด้วยการใช้&&แม้ว่ามันจะหายากมากเพราะ&&จะใช้ได้เฉพาะในกรณีที่นิพจน์ทั้งสองส่งคืนบูลีน:

n>5&&doSomething(n);

ข้อยกเว้นหนึ่งที่สำคัญในการนี้คือคำหลัก : ถ้า Haxe ทำงานเป็นreturn, breakหรือcontinue ทุกที่ก็จะทำงานทันทีและเลิกสิ่งที่แสดงออกมันกำลังทำงานอยู่บน ซึ่งหมายความว่าแทนที่จะเป็น:

if(n>5)return n;

คุณสามารถทำได้เพื่อบันทึก 2 ไบต์:

n>5&&return n;

1

ใช้คำหลักเป็นนิพจน์

คุณสมบัติที่ผิดปกติอีกอย่างของ Haxe คือทุกอย่างแสดงออกได้ ตัวอย่างเช่นรหัสนี้ใช้ได้อย่างสมบูรณ์:

function(n){while(n>0)n%4==1?return 6:n--;return 3;}

โอเคนั่นเป็นตัวอย่างที่ไร้ประโยชน์ แต่หวังว่าคุณจะได้คะแนนของฉัน สิ่งนี้ใช้ได้กับคำหลักส่วนใหญ่:

function(n){while(n>0)n%4==1?break:n--;return n;}

สิ่งนี้ช่วยให้คุณสามารถใช้if/ elseinline p=if(n>1)7else 4;ได้ แต่แน่นอนว่าp=n>1?7:4;จะสั้นกว่า

คำหลักที่คุณไม่สามารถใช้แบบอินไลน์

  • var - คอมไพเลอร์จะบ่นเกี่ยวกับการพยายามใช้ Void เป็นค่า
  • for/ while- เหมือนกับข้างต้นแม้ว่าคุณจะสามารถใช้มันในความเข้าใจของอาเรย์

1

ละเว้นวงเล็บเหลี่ยมฟังก์ชัน

ซึ่งแตกต่างจากภาษาส่วนใหญ่ทุกอย่างใน Haxe คือการแสดงออก{blocks}รวมทั้ง ดังนั้นวงเล็บปีกกาที่ใดก็ได้ในโปรแกรม Haxe (ยกเว้นการswitchแสดงออก) สามารถทิ้งไว้ถ้าพวกเขามีเพียงคำสั่งเดียว ดังนั้นแทนที่จะเป็นเช่นนี้:

function f(n){return Math.pow(3,n);}

คุณสามารถทำได้:

function f(n)return Math.pow(3,n);

ง่ายสองไบต์บันทึกไว้ในฟังก์ชั่นมากมาย

แม้ว่าฟังก์ชั่นจะต้องมีหลายคำสั่งคุณสามารถบันทึกไบต์ได้โดยการย้ายreturn บล็อกภายนอก:

function f(a){var b=a*a;return a<0?-b:b;}
function f(a)return{var b=a*a;a<0?-b:b;}

สิ่งนี้ทำงานได้เพราะบล็อกประเมินการแสดงออกครั้งสุดท้ายภายในบล็อก


แก้ไข: หากคุณต้องการคิวบ์ของตัวเลขควรใช้n*n*nหรือดีกว่าn*n*n*nสำหรับ tesseract ของตัวเลข ฯลฯ ... อย่างไรก็ตามMath.powเป็นตัวอย่างที่ดีที่นี่
Yytsi

@ TuukkaX เฮ๊ะขอบคุณ ฉันจะใช้Math.pow(3,n);-)
ETHproductions
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.