paizaラーニングレベルアップ問題集の「何番目にある？」「指定要素の先頭位置」をやってみた。

paizaラーニングレベルアップ問題集の「何番目にある？」「指定要素の先頭位置」をやってみました。
- - -
##### 問題
###### 何番目にある？
https://paiza.jp/works/mondai/array_primer/array_primer__search_i-th_step3
###### 指定要素の先頭位置
https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__find
- - -
- 1問目は
	- 1行目は指定要素$N$、配列の要素数$M$の順で与えられます
	- 配列は半角空白区切り（ヨコ入力）で与えられます
	- 入力はすべて1以上10以下の整数です
	- $N$は$M$個の整数の中に必ず$1$つだけ含まれることが保証されています
- 2問目は
	- 1行目は配列の要素数$N$、指定要素$K$の順で与えられます
	- 配列は改行区切り（タテ入力）で与えられます
	- 要素数は1以上100以下、要素は0以上100以下の整数です
	- $K$は$N$個の整数の中に2つ以上含まれる場合も、1つも含まれない場合もあります

出力時は先頭要素を1番目として出力します。
- - -
##### C
###### 何番目にある？
```c
#include <stdio.h>

int index(int n, int A[n], int k) {
	for (int i = 0; i < n; i++) if (A[i] == k) return i;
	return -1;
}

int main() {
	int n, m;
	scanf("%d %d", &n, &m);
	int A[m];
	for (int i = 0; i < m; i++) scanf("%d", &A[i]);
	int idx = index(m, A, n);
	if (idx < 0) printf("%d\n", -1);
	else printf("%d\n", idx + 1);
	return 0;
}
```
###### 指定要素の先頭位置
```c
#include <stdio.h>

int index(int n, int A[n], int k) {
	for (int i = 0; i < n; i++) if (A[i] == k) return i;
	return -1;
}

int main() {
	int n, k;
	scanf("%d %d", &n, &k);
	int A[n];
	for (int i = 0; i < n; i++) scanf("%d", &A[i]);
	int idx = index(n, A, k);
	if (idx < 0) printf("%d\n", -1);
	else printf("%d\n", idx + 1);
	return 0;
}
```
- - -
##### C++
###### 何番目にある？
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	int n, m;
	cin >> n >> m;
	vector<int> A(m);
	for (int i = 0; i < m; i++) cin >> A[i];
	vector<int>::iterator it = find(A.begin(), A.end(), n);
	if (it == A.end()) cout << -1 << endl;
	else cout << it - A.begin() + 1 << endl;
	return 0;
}
```
###### 指定要素の先頭位置
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	int n, k;
	cin >> n >> k;
	vector<int> A(n);
	for (int i = 0; i < n; i++) cin >> A[i];
	vector<int>::iterator it = find(A.begin(), A.end(), k);
	if (it == A.end()) cout << -1 << endl;
	else cout << it - A.begin() + 1 << endl;
	return 0;
}
```
- - -
##### C#
###### 何番目にある？
```cs
using System;

class Program
{
	public static void Main()
	{
		int n = int.Parse(Console.ReadLine().Split()[0]);
		int[] A = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
		int index = Array.IndexOf(A, n);
		if (index < 0) Console.WriteLine(-1);
		else Console.WriteLine(index + 1);
	}
}
```
###### 指定要素の先頭位置
```cs
using System;
using System.Linq;

class Program
{
	public static void Main()
	{
		int[] nk = Console.ReadLine().Split().Select(_ => int.Parse(_)).ToArray();
		int n = nk[0], k = nk[1];
		int[] A = Enumerable.Range(0, n).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		int index = Array.IndexOf(A, k);
		if (index < 0) Console.WriteLine(-1);
		else Console.WriteLine(index + 1);
	}
}
```
- - -
##### Go
###### 何番目にある？
```go
package main
import "fmt"

func index(A []int, k int) int {
	for i, a := range(A) {
		if a == k {
			return i
		}
	}
	return -1
}

func main() {
	var n, m int
	fmt.Scan(&n, &m)
	A := make([]int, m)
	for i := 0; i < m; i++ {
		fmt.Scan(&A[i])
	}
	idx := index(A, n)
	if idx < 0 {
		fmt.Println(-1)
	} else {
		fmt.Println(idx + 1)
	}
}
```
###### 指定要素の先頭位置
```go
package main
import "fmt"

func index(A []int, k int) int {
	for i, a := range(A) {
		if a == k {
			return i
		}
	}
	return -1
}

func main() {
	var n, k int
	fmt.Scan(&n, &k)
	A := make([]int, n)
	for i := 0; i < n; i++ {
		fmt.Scan(&A[i])
	}
	idx := index(A, k)
	if idx < 0 {
		fmt.Println(-1)
	} else {
		fmt.Println(idx + 1)
	}
}
```
- - -
##### Java
###### 何番目にある？
```java
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		List<Integer> A = new ArrayList<Integer>();
		for (int i = 0; i < m; i++) {
			A.add(sc.nextInt());
		}
		sc.close();
		int idx = A.indexOf(n);
		if (idx < 0) System.out.println(-1);
		else System.out.println(idx + 1);
	}
}
```
###### 指定要素の先頭位置
```java
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int k = sc.nextInt();
		List<Integer> A = new ArrayList<Integer>();
		for (int i = 0; i < n; i++) {
			A.add(sc.nextInt());
		}
		sc.close();
		int idx = A.indexOf(k);
		if (idx < 0) System.out.println(-1);
		else System.out.println(idx + 1);
	}
}
```
- - -
##### JavaScript
###### 何番目にある？
```js
const [[n, m], A] = require("fs").readFileSync("/dev/stdin", "utf8").trim().split('\n').map(s => s.split(' ').map(Number));
const idx = A.indexOf(n);
if (idx < 0) console.log(-1);
else console.log(idx + 1);
```
###### 指定要素の先頭位置
```js
const [[n, k], ...A] = require("fs").readFileSync("/dev/stdin", "utf8").trim().split('\n').map((s, i) => i ? Number(s) : s.split(' ').map(Number));
const idx = A.indexOf(k);
if (idx < 0) console.log(-1);
else console.log(idx + 1);
```
- - -
##### Kotlin
###### 何番目にある？
```kotlin
fun main() {
	val n = readLine()!!.split(' ')[0].toInt()
	val A = readLine()!!.split(' ').map { it.toInt() }
	val idx = A.indexOf(n)
	if (idx < 0) println(-1)
	else println(idx + 1)
}
```
###### 指定要素の先頭位置
```kotlin
fun main() {
	val (n, k) = readLine()!!.split(' ').map { it.toInt() }
	val A = Array(n) { readLine()!!.toInt() }
	val idx = A.indexOf(k)
	if (idx < 0) println(-1)
	else println(idx + 1)
}
```
- - -
##### PHP
###### 何番目にある？
```php
<?php
	[$n, $m] = array_map("intval", explode(' ', fgets(STDIN)));
	$A = array_map("intval", explode(' ', fgets(STDIN)));
	$idx = array_search($n, $A);
	if ($idx === false) echo -1, PHP_EOL;
	else echo $idx + 1, PHP_EOL;
?>
```
###### 指定要素の先頭位置
```php
<?php
	[$n, $k] = array_map("intval", explode(' ', fgets(STDIN)));
	$A = [];
	for ($i = 0; $i < $n; $i++) $A[] = intval(fgets(STDIN));
	$idx = array_search($k, $A);
	if ($idx === false) echo -1, PHP_EOL;
	else echo $idx + 1, PHP_EOL;
?>
```
- - -
##### Perl
###### 何番目にある？
```pl
my ($n, $m) = map { int($_) } split ' ', <STDIN>;
my @A = map { int($_) } split ' ', <STDIN>;
my $idx = -1;
for (0..$m) {
	if ($_ == $m) {
		print -1, $/;
	} elsif ($A[$_] == $n) {
		print $_ + 1, $/;
		last;
	}
}
```
###### 指定要素の先頭位置
```pl
my ($n, $k) = map { int($_) } split ' ', <STDIN>;
my @A;
for (1..$n) {
	push @A, int(<STDIN>);
}
my $idx = -1;
for (0..$n) {
	if ($_ == $n) {
		print -1, $/;
	} elsif ($A[$_] == $k) {
		print $_ + 1, $/;
		last;
	}
}
```
- - -
##### Python3
###### 何番目にある？
```py
n, _ = map(int, input().split())
A = list(map(int, input().split()))
if n in A:
	print(A.index(n) + 1)
else:
	print(-1)
```
###### 指定要素の先頭位置
```py
n, k = map(int, input().split())
A = [int(input()) for _ in range(n)]
if k in A:
	print(A.index(k) + 1)
else:
	print(-1)
```
- - -
##### Ruby
###### 何番目にある？
```rb
n, _ = gets.split.map(&:to_i)
A = gets.split.map(&:to_i)
idx = A.index(n)
if idx
	p idx + 1
else
	p -1
end
```
###### 指定要素の先頭位置
```rb
n, k = gets.split.map(&:to_i)
A = n.times.map { gets.to_i }
idx = A.index(k)
if idx
	p idx + 1
else
	p -1
end
```
- - -
##### Scala
###### 何番目にある？
```scala
import scala.io.StdIn._

object Main extends App{
	val Array(n, _) = readLine().split(' ').map { _.toInt }
	val A = readLine().split(' ').map { _.toInt }
	val idx = A.indexOf(n)
	if (idx < 0) println(-1)
	else println(idx + 1)
}
```
###### 指定要素の先頭位置
```scala
import scala.io.StdIn._

object Main extends App{
	val Array(n, k) = readLine().split(' ').map { _.toInt }
	val A = (0 until n).map { _ => readInt() }
	val idx = A.indexOf(k)
	if (idx < 0) println(-1)
	else println(idx + 1)
}
```
- - -
##### Swift
###### 何番目にある？
```swift
let nm = readLine()!.split(separator: " ").compactMap { Int($0) }
let n = nm[0]
let A = readLine()!.split(separator: " ").compactMap { Int($0) }
if let idx = A.firstIndex(of: n) {
	print(idx + 1)
} else {
	print(-1)
}
```
###### 指定要素の先頭位置
```swift
let nk = readLine()!.split(separator: " ").compactMap { Int($0) }
let (n, k) = (nk[0], nk[1])
var A: [Int] = []
for _ in 0..<n {
	A.append(Int(readLine()!)!)
}
if let idx = A.firstIndex(of: k) {
	print(idx + 1)
} else {
	print(-1)
}
```