2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【電脳少女プログラミング2088 ─壊レタ君を再構築─】「自然の残る公園」をやってみた。

Posted at

paizaの新作プログラミングゲーム【電脳少女プログラミング2088 ─壊レタ君を再構築─】自然の残る公園(paizaランク:C相当)をやってみました。


問題


方針
  1. ビーコンの数を表す整数$N$、現在の位置の$y$座標を表す整数$a$、$x$座標を表す整数$b$を受け取ります
  2. 最も近いビーコンの番号$K$を$0$未満または$N$より大きい整数で初期化します
  3. 最も近いビーコンの距離の2乗$D$を$8,000,000$より大きい整数で初期化します(問題の制約条件より)
  4. 以下、$i=1,2,...,N$について繰り返します
    1. ビーコンの座標を表す整数$(y_i,x_i)$を受け取ります
    2. 現在地とビーコンとの距離の2乗$(x-b)^2+(y-a)^2$を計算します
    3. その距離が$D$未満ならば
      1. 最も近いビーコンの番号$K$を$i$に置き換えます
      2. $D$を更新します
  5. 最も近いビーコンの番号$K$を出力します
  • 距離の比較は距離の2乗で、整数の状態で比較します
  • 距離の計算は$f(x_0,x_1,y_0,y_1)$や$f(x_0,y_0,x_1,y_1)$の様な定義でもいいのですが、今回は$f_{b,a}(x,y)$の様な感じで定義します

C
#include <stdio.h>

int a, b;

int square_distance(int y, int x) {
	return (y - a) * (y - a) + (x - b) * (x - b);
}

int main() {
	int n;
	scanf("%d %d %d", &n, &a, &b);
	int k;
	int min = 1 << 23;
	for (int i = 1; i <= n; i++) {
		int y, x;
		scanf("%d %d", &y, &x);
		int d = square_distance(y, x);
		if (d < min) {
			k = i;
			min = d;
		}
	}
	printf("%d\n", k);
	return 0;
}

C++
#include <iostream>
using namespace std;

int a, b;

int square_distance(int y, int x) {
	return (y - a) * (y - a) + (x - b) * (x - b);
}

int main() {
	int n;
	cin >> n >> a >> b;
	int k;
	int minimum = 1 << 23;
	for (int i = 1; i <= n; i++) {
		int y, x;
		cin >> y >> x;
		int d = square_distance(y, x);
		if (d < minimum) {
			k = i;
			minimum = d;
		}
	}
	cout << k << endl;
	return 0;
}

C#
using System;

class Program
{
	static int a, b;

	private static int SquareDistance(int y, int x) {
		return (y - a) * (y - a) + (x - b) * (x - b);
	} 
	
	public static void Main()
	{
		int[] nab = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
		int n = nab[0];
		a = nab[1];
		b = nab[2];
		int k = -1;
		int min = 1 << 23;
		for (int i = 1; i <= n; i++) {
			int[] yx = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
			int d = SquareDistance(yx[0], yx[1]);
			if (d < min) {
				k = i;
				min = d;
			}
		}
		Console.WriteLine(k);
	}
}

Go
package main
import "fmt"

var a, b int

func square_distance(y int, x int) int {
	return (y - a) * (y - a) + (x - b) * (x - b)
}

func main() {
	var n int
	fmt.Scan(&n, &a, &b)
	var k int
	min := 1 << 23
	for i := 1; i <= n; i++ {
		var y, x int
		fmt.Scan(&y, &x)
		d := square_distance(y, x)
		if d < min {
			k = i
			min = d
		}
	}
	fmt.Println(k)
}

Java
import java.util.*;

public class Main {
	
	static int a, b;

	private static int squareDistance(int y, int x) {
		return (y - a) * (y - a) + (x - b) * (x - b);
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		a = sc.nextInt();
		b = sc.nextInt();
		int k = -1;
		int min = 1 << 23;
		for (int i = 1; i <= n; i++) {
			int d = squareDistance(sc.nextInt(), sc.nextInt());
			if (d < min) {
				k = i;
				min = d;
			}
		}
		System.out.println(k);
		sc.close();
	}
}

JavaScript
const lines = require("fs").readFileSync("/dev/stdin", "utf8").split('\n');
const [n, a, b] = lines[0].split(' ').map(Number);

function squareDistance(y, x) {
	return (y - a) * (y - a) + (x - b) * (x - b);
}

let k;
let min = 1 << 23;
for (var i = 1; i <= n; i++) {
	let [y, x] = lines[i].split(' ').map(Number);
	let d = squareDistance(y, x);
	if (d < min) {
		k = i;
		min = d;
	}
}
console.log(k);

Kotlin
import java.util.*

var a = 0
var b = 0

fun squareDistance(y: Int, x: Int): Int {
	return (y - a) * (y - a) + (x - b) * (x - b);
}

fun main() {
	val sc = Scanner(System.`in`)
	val n = sc.nextInt()
	a = sc.nextInt()
	b = sc.nextInt()
	var k = -1
	var min = 1 shl 23
	for (i in 1..n) {
		val d = squareDistance(sc.nextInt(), sc.nextInt())
		if (d < min) {
			k = i
			min = d
		}
	}
	sc.close()
	println(k)
}

PHP
<?php
	[$n, $a, $b] = array_map('intval', explode(' ', fgets(STDIN)));
	function square_distance($y, $x) {
		global $a, $b;
		return ($y - $a) * ($y - $a) + ($x - $b) * ($x - $b);
	}
	$k = null;
	$min = 1 << 23;
	for ($i = 1; $i <= $n; $i++) {
		[$y, $x] = array_map('intval', explode(' ', fgets(STDIN)));
		$d = square_distance($y, $x);
		if ($d < $min) {
			$k = $i;
			$min = $d;
		}
	}
	echo $k, PHP_EOL;
?>

Perl
my ($n, $a, $b) = map{ int($_) }(split(' ',<STDIN>));
sub square_distance {
	return ($_[0] - $a) * ($_[0] - $a) + ($_[1] - $b) * ($_[1] - $b);
}
my $k;
my $min = 1 << 23;
for (my $i = 1; $i <= $n; $i++) {
	my ($y, $x) = map{ int($_) }(split(' ',<STDIN>));
	my $d = &square_distance($y, $x);
	if ($d < $min) {
		$k = $i;
		$min = $d;
	}
}
print "$k$/";

Python3
n, a, b = map(int, input().split())

def square_distance(y, x):
	return (y - a) * (y - a) + (x - b) * (x - b)

k = None
minimum = 1 << 23

for i in range(n):
	y, x = map(int, input().split())
	d = square_distance(y, x)
	if d < minimum:
		k = i + 1
		minimum = d

print(k)

Ruby
n, $a, $b = gets.split.map(&:to_i)

def square_distance(y, x)
	return (y - $a) * (y - $a) + (x - $b) * (x - $b)
end

k = nil
min = 1 << 23
n.times do |i|
	y, x = gets.split.map(&:to_i)
	d = square_distance(y, x)
	if d < min
		k = i + 1
		min = d
	end
end
p k

Scala
import scala.io.StdIn._

object Main extends App{
	val Array(n, a, b) = readLine().split(" ").map(_.toInt)
	val squareDistance = (y: Int, x: Int) => (y - a) * (y - a) + (x - b) * (x - b)
	var k = -1
	var min = 1 << 23
	for (i <- 1 to n) {
		val Array(y, x) = readLine().split(" ").map(_.toInt)
		val d = squareDistance(y, x)
		if (d < min) {
			k = i
			min = d
		}
	}
	println(k)
}

Swift
let nab = readLine()!.split(separator: " ").map { Int($0)! }
let (n, a, b) = (nab[0], nab[1], nab[2])
func squareDistance(y: Int, x: Int) -> Int {
	return (y - a) * (y - a) + (x - b) * (x - b)
}
var k = -1
var minimum = 1 << 23
for i in 1...n {
	let yx = readLine()!.split(separator: " ").map { Int($0)! }
	let d = squareDistance(y: yx[0], x: yx[1])
	if d < minimum {
		k = i
		minimum = d
	}
}
print(k)
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?