課題:任意の言語でデラコルテ数の計算を実装します。最短のコードが優先されます。
異なる整数1..n²(少なくとも3〜27の間の可能な辺の長さn)の特定の正方行列の場合、そのデラコルテ数は、gcd(a、b)×distance²(a、b)の積の合計です。各個別整数のペア{a、b}。
次の例は、160のデラコルテ数を持つ3×3の正方形を示しています。
3 2 9
4 1 8
5 6 7
この正方形には、計算する36の異なるペアがあります。たとえば、ペア4と6です。gcd(4、6)× 距離 ²(4、6)= 4
テスト用の別の正方形の例-これには、5957のデラコルテ番号があります。
10 8 11 14 12
21 4 19 7 9
5 13 23 1 16
18 3 17 2 15
24 22 25 6 20
デラコルテ番号は、このプログラミングコンテストから取得されます -詳細については、こちらをご覧ください...コンテストは2015年1月に終了しました。とても楽しかったです!
ルール:
必要な改行は1文字としてカウントされます。改行付きのゴルフソリューションを投稿できますが、その言語で必要な場合にのみカウントされます。
入出力の処理方法を選択でき、標準インクルードやメイン関数ヘッダーなど、言語の必要なフレームワークを数える必要はありません。このC#の例のように、実際のコードカウント(ショートカット/エイリアス定義を含む)のみ:
namespace System
{
using Collections.Generic;
using I=Int32; //this complete line counts
class Delacorte
{
static I l(I[]a){return a.Length;} //of course this complete line counts
static void CalculateSquare(int[] a, out int r)
{
r=0;for(I i=l(a);i-->0;)r+=a[i]; //here only this line counts
}
static void Main()
{
int result;
CalculateSquare(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, out result);
Console.Write(result); //should output 140 for the example
Console.ReadKey();
}
}
}
また、正方形を2次元配列として、プロンプトから、または文字列または標準的なコレクションタイプとして入力することもできます。2次元配列は、正方形の辺の長さを自分で計算する必要がない唯一の方法です。
実際の作業のためのサブ機能は必要ありません。Main()内にコードを直接配置することもできます。
次のように、さらに多くの準備が無料で許可されます。
using System;
unsafe class Delacorte
{
static void CalculateSquare(int* a, out int r)
{
r=0;while(*a>0)r+=*a++; //only this line counts
}
static void Main()
{
var input = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; //adding a terminator
int result;
fixed (int* a = &input[0]) //necessary in C#
CalculateSquare(a, out result);
Console.Write(result);
Console.ReadKey();
}
}
長期にわたる準備がこれらのルールの精神に沿っているのか、それとも不正行為と呼ばれるのかわからない場合は、質問してください:)
using例を参照してください-それがライブラリを含めるために使用されている場合、そうでなければあなたはいくつかの関数を呼び出すことができなかったので、それは無料です。これを使用して何かの短いエイリアスを定義すると、命令全体がカウントされます。