paizaラーニングレベルアップ問題集の【大きな数値を3けたごとにカンマ区切りで出力】をやってみた。

paizaラーニングレベルアップ問題集の【大きな数値を3けたごとにカンマ区切りで出力】をやってみました。
- - -
##### 問題
###### 大きな数値を3けたごとにカンマ区切りで出力（けた数は3の倍数です）
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__specific_split_step6
###### 大きな数値を3けたごとにカンマ区切りで出力2（けた数は3の倍数とは限りません）
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__specific_split_boss
- - -
##### 方針
1. けた数が3の倍数
	- 自然数$N$を文字列として受け取ります
	- 自然数$N$のけた数（バイト数）を$d$とします
	- $i=1,2,...,d$について
		- 自然数$N$の上から$i$けた目を出力します
		- $i$が$3$の倍数かつ$i\neq d$ならば
			- $i$けた目を出力した直後に`,`を出力します
	- 改行を出力します
1. けた数は3の倍数とは限らない
	- 自然数$N$を文字列として受け取ります
	- 自然数$N$のけた数を$d$とします
	- $i=1,2,...,d$について
		- 自然数$N$の上から$i$けた目を出力します
		- 未出力のけた数$d-i$が正の$3$の倍数ならば
			- $i$けた目を出力した直後に`,`を出力します
	- 改行を出力します

但し、プログラムでは$i=0,1,...,d-1$で処理するので、ループ部分を以下のようにします。

1. けた数が3の倍数
	- $i=0,1,...,d-1$について
		- $i$が正の$3$の倍数ならば
			- `,`を出力します
		- 自然数$N$の上から$i+1$けた目を出力します
1. けた数は3の倍数とは限らない
	- $i=0,1,...,d-1$について
		- $i>0$かつ、未出力のけた数$d-i$が$3$の倍数ならば
			- `,`を出力します
		- 自然数$N$の上から$i+1$けた目を出力します
:::note info
2.のコードでも1.を正解することができます。
:::
- - -
##### C
###### 3の倍数のけた数
```c
#include <stdio.h>
#include <string.h>

int main() {
	char n[1002];
	scanf("%s", n);
	int d = (int) strlen(n);
	for (int i = 0; i < d; i++) {
		if (i > 0 && i % 3 == 0) putchar(',');
		putchar(n[i]);
	}
	return 0;
}
```
###### 3の倍数とは限らないけた数
```c
#include <stdio.h>
#include <string.h>

int main() {
	char n[1002];
	scanf("%s", n);
	int d = (int) strlen(n);
	for (int i = 0; i < d; i++) {
		if (i > 0 && (d - i) % 3 == 0) putchar(',');
		putchar(n[i]);
	}
	puts("");
	return 0;
}
```
- - -
##### C++
###### 3の倍数のけた数
```cpp
#include <iostream>
using namespace std;

int main() {
	string n;
	cin >> n;
	int d = (int) n.size();
	for (int i = 0; i < d; i++) {
		if (i > 0 && i % 3 == 0) cout << ',';
		cout << n[i];
	}
	cout << endl;
	return 0;
}
```
###### 3の倍数とは限らないけた数
```cpp
#include <iostream>
using namespace std;

int main() {
	string n;
	cin >> n;
	int d = (int) n.size();
	for (int i = 0; i < d; i++) {
		if (i > 0 && (d - i) % 3 == 0) cout << ',';
		cout << n[i];
	}
	cout << endl;
	return 0;
}
```
- - -
##### C#
###### 3の倍数のけた数
```cs
using System;

class Program
{
	public static void Main()
	{
		string n = Console.ReadLine();
		int d = n.Length;
		for (int i = 0; i < d; i++) {
			if (i > 0 && i % 3 == 0) Console.Write(',');
			Console.Write(n[i]);
		}
		Console.WriteLine();
	}
}
```
###### 3の倍数とは限らないけた数
```cs
using System;

class Program
{
	public static void Main()
	{
		string n = Console.ReadLine();
		int d = n.Length;
		for (int i = 0; i < d; i++) {
			if (i > 0 && (d - i) % 3 == 0) Console.Write(',');
			Console.Write(n[i]);
		}
		Console.WriteLine();
	}
}
```
- - -
##### Go
###### 3の倍数のけた数
```go
package main
import "fmt"

func main() {
	var n string
	fmt.Scan(&n)
	d := len(n)
	for i := 0; i < d; i++ {
		if i > 0 && i % 3 == 0 {
			fmt.Print(",")
		}
		fmt.Printf("%c", n[i])
	}
	fmt.Println()
}
```
###### 3の倍数とは限らないけた数
```go
package main
import "fmt"

func main() {
	var n string
	fmt.Scan(&n)
	d := len(n)
	for i := 0; i < d; i++ {
		if i > 0 && (d - i) % 3 == 0 {
			fmt.Print(",")
		}
		fmt.Printf("%c", n[i])
	}
	fmt.Println()
}
```
- - -
##### Java
###### 3の倍数のけた数
```java
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String n = sc.nextLine();
		sc.close();
		int d = n.length();
		for (int i = 0; i < d; i++) {
			if (i > 0 && i % 3 == 0) System.out.print(',');
			System.out.print(n.charAt(i));
		}
		System.out.println();
	}
}
```
###### 3の倍数とは限らないけた数
```java
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String n = sc.nextLine();
		sc.close();
		int d = n.length();
		for (int i = 0; i < d; i++) {
			if (i > 0 && (d - i) % 3 == 0) System.out.print(',');
			System.out.print(n.charAt(i));
		}
		System.out.println();
	}
}
```
- - -
##### JavaScript
###### 3の倍数のけた数
```js
const n = require("fs").readFileSync("/dev/stdin", "utf8").trim();
const d = n.length;
let m = "";
for (var i = 0; i < d; i++) {
	if (i > 0 && i % 3 === 0) m += ",";
	m += n[i];
}
console.log(m);
```
###### 3の倍数とは限らないけた数
```js
const n = require("fs").readFileSync("/dev/stdin", "utf8").trim();
const d = n.length;
let m = "";
for (var i = 0; i < d; i++) {
	if (i > 0 && (n - i) % 3 === 0) m += ",";
	m += n[i];
}
console.log(m);
```
- - -
##### Kotlin
###### 3の倍数のけた数
```kotlin
fun main() {
	val n = readLine()!!
	val d = n.length
	for (i in 0 until d) {
		if (i > 0 && i % 3 == 0) print(',')
		print(n[i])
	}
	println()
}
```
###### 3の倍数とは限らないけた数
```kotlin
fun main() {
	val n = readLine()!!
	val d = n.length
	for (i in 0 until d) {
		if (i > 0 && (d - i) % 3 == 0) print(',')
		print(n[i])
	}
	println()
}
```
- - -
##### PHP
###### 3の倍数のけた数
```php
<?php
	$n = trim(fgets(STDIN));
	$d = strlen($n);
	for ($i = 0; $i < $d; $i++) {
		if ($i > 0 && $i % 3 == 0) echo ',';
		echo $n[$i];
	}
	echo PHP_EOL;
?>
```
###### 3の倍数とは限らないけた数
```php
<?php
	$n = trim(fgets(STDIN));
	$d = strlen($n);
	for ($i = 0; $i < $d; $i++) {
		if ($i > 0 && ($d - $i) % 3 === 0) echo ',';
		echo $n[$i];
	}
	echo PHP_EOL;
?>
```
- - -
##### Perl
###### 3の倍数のけた数
```pl
chomp(my $n = <STDIN>);
my $d = length($n);
for (my $i = 0; $i < $d; $i++) {
	if ($i > 0 && $i % 3 == 0) {
		print ',';
	}
	print substr($n, $i, 1);
}
print $/;
```
###### 3の倍数とは限らないけた数
```pl
chomp(my $n = <STDIN>);
my $d = length($n);
for (my $i = 0; $i < $d; $i++) {
	if ($i > 0 && ($d - $i) % 3 == 0) {
		print ',';
	}
	print substr($n, $i, 1);
}
print $/;
```
- - -
##### Python3
###### 3の倍数のけた数
```py
n = input()
d = len(n)
m = ""
for i in range(d):
	if i > 0 and i % 3 == 0:
		m += ','
	m += n[i]
print(m)
```
###### 3の倍数とは限らないけた数
```py
n = input()
d = len(n)
m = ""
for i in range(d):
	if i > 0 and (d - i) % 3 == 0:
		m += ','
	m += n[i]
print(m)
```
- - -
##### Ruby
###### 3の倍数のけた数
```rb
n = gets.chomp
d = n.size
d.times do |i|
	if i > 0 && i % 3 == 0
		print ','
	end
	print n[i]
end
puts
```
###### 3の倍数とは限らないけた数
```rb
n = gets.chomp
d = n.size
d.times do |i|
	if i > 0 && (d - i) % 3 == 0
		print ','
	end
	print n[i]
end
puts
```
- - -
##### Scala
###### 3の倍数のけた数
```scala
import scala.io.StdIn._

object Main extends App{
	val n = readLine()
	val d = n.length
	for (i <- 0 until d) {
		if (i > 0 && i % 3 == 0) {
			print(",")
		}
		print(n.charAt(i))
	}
	println()
}
```
###### 3の倍数とは限らないけた数
```scala
import scala.io.StdIn._

object Main extends App{
	val n = readLine()
	val d = n.length
	for (i <- 0 until d) {
		if (i > 0 && (d - i) % 3 == 0) {
			print(",")
		}
		print(n.charAt(i))
	}
	println()
}
```
- - -
##### Swift
###### 3の倍数のけた数
```swift
let n = readLine()!
let d = n.count
for i in 0..<d {
	if i > 0 && i % 3 == 0 {
		print(",", terminator: "")
	}
	print(n[n.index(n.startIndex, offsetBy: i)], terminator: "")
}
```
###### 3の倍数とは限らないけた数
```swift
let n = readLine()!
let d = n.count
for i in 0..<d {
	if i > 0 && (d - i) % 3 == 0 {
		print(",", terminator: "")
	}
	print(n[n.index(n.startIndex, offsetBy: i)], terminator: "")
}
```