2014年12月3日より開始したpaizaオンラインハッカソン Vol.4 Lite「エンジニアでも恋がしたい!」ですが、2015年1月7日いっぱいをもって開催期間を終了いたしました。(コードの実行自体は引き続き可能です)。
今回のオンラインハッカソンは前回に引き続き、誰でも参加しやすいように問題の難易度を低めにしました。またシリーズ初となる複数問題形式で、解答結果による物語(まんが)が分岐していくものでしたが、全パターンみられましたでしょうか。多くの方から結婚報告をいただき、ありがとうございました!
↓結婚報告例
野田ちゃんとのハワイ旅行だーーー!
— irony (@snow_irony) 2014年12月5日
結婚できた! ミッション3の結果[100点] |POH4「エンジニアでも恋がしたい!〜転職初日にぶつかった女の子が同僚だった件〜」 https://t.co/RmIdTSshuh #_poh
結婚まで早かった。
— てけ (@techeten) 2014年12月9日
結婚できた! ミッション3:techeさんの結果[100点] |POH4「エンジニアでも恋がしたい!〜転職初日にぶつかった女の子が同僚だった件〜」 https://t.co/ExH9kyULYe #_poh
今回も数多くご参加いただき無事オンラインハッカソンを終える事が出来ました! 今回はpaizaオンラインハッカソンVol.4のレポート、最終結果と、提出された各プログラミング言語毎の解答コード(問3)についてお届けします。
■提出コードは過去最多の27,000件!
おかげ様でPOHシリーズ過去最高の参加者数、提出数のハッカソンとする事ができました。ご参加いただいた皆様ありがとうございました! 今回の期間中の参加者数、提出数は以下の通りです。
参加者数:4,177人
提出数:26.963提出
過去最高の参加者の背景には、今回中国、台湾、韓国といったアジア圏からの参加者も多く、海賊版ですが中国語版のサイトも出来た事も大きく関係しています。
【中国語版ができました!】POH第4弾「エンジニアでも恋がしたい!」 - paiza開発日誌
そんなこともあったので、もしかすると次回のPOHは国際大会になるかも!?
■参加者数ランキング
メールアドレスベースでユニークの参加者数です。
順位 | 提出人数 | 言語 |
---|---|---|
1 | 869人 | C++ |
2 | 799人 | C |
3 | 756人 | Java |
4 | 506人 | Ruby |
5 | 505人 | Python |
6 | 458人 | PHP |
7 | 350人 | C# |
8 | 239人 | JavaScript |
9 | 150人 | Perl |
10 | 61人 | Haskell(Beta) |
11 | 60人 | Python3(Beta) |
12 | 34人 | Go(Beta) |
13 | 32人 | Scala(Beta) |
14 | 29人 | Bash(Beta) |
15 | 19人 | Objective-C(Beta) |
16 | 16人 | VB(Beta) |
17 | 15人 | Clojure(Beta) |
17 | 15人 | D(Beta) |
19 | 13人 | CoffeeScript(Beta) |
20 | 10人 | R(Beta) |
21 | 8人 | COBOL(Beta) |
21 | 8人 | F#(Beta) |
23 | 6人 | Erlang(Beta) |
C++,C,Java勢が多いのはいつもの事として、その次に大体PHPと続くの事が多いですが、今回PHPは6位と参加者数が少な目でした。Beta版言語は、やはりBeta版という事もあってか参加者は少なめでした。
■どの言語習得者が優秀なのか!?
どの言語習得者が優秀なのでしょうか? ユニークの提出者ベースで問3突破率(100点率)を言語別で出してみました。
言語 | 受験者数 | 突破人数 | 割合 |
---|---|---|---|
F#(Beta) | 8 | 8 | 100.00% |
D(Beta) | 15 | 9 | 60.00% |
R(Beta) | 10 | 6 | 60.00% |
C++ | 869 | 509 | 58.60% |
Perl | 151 | 81 | 53.60% |
Ruby | 509 | 260 | 51.10% |
Python3(Beta) | 60 | 30 | 50.00% |
Go(Beta) | 34 | 17 | 50.00% |
C# | 353 | 175 | 49.60% |
Python | 505 | 239 | 47.30% |
CoffeeScript(Beta) | 13 | 6 | 46.20% |
Scala(Beta) | 32 | 14 | 43.80% |
Clojure(Beta) | 16 | 7 | 43.80% |
VB(Beta) | 16 | 7 | 43.80% |
Java | 759 | 327 | 43.10% |
Objective-C(Beta) | 19 | 8 | 42.10% |
C | 802 | 335 | 41.80% |
Haskell(Beta) | 61 | 23 | 37.70% |
PHP | 461 | 149 | 32.30% |
Bash(Beta) | 29 | 5 | 17.20% |
Erlang(Beta) | 6 | 1 | 16.70% |
COBOL(Beta) | 8 | 1 | 12.50% |
JavaScript | 240 | 27 | 11.30% |
F#優秀! というには数があれなので、β版言語は除いたのが下記のランキングになります。
言語 | 受験者数 | 突破人数 | 割合 |
---|---|---|---|
C++ | 869 | 509 | 58.60% |
Perl | 151 | 81 | 53.60% |
Ruby | 509 | 260 | 51.10% |
C# | 353 | 175 | 49.60% |
Python | 505 | 239 | 47.30% |
Java | 759 | 327 | 43.10% |
C | 802 | 335 | 41.80% |
PHP | 461 | 149 | 32.30% |
JavaScript | 240 | 27 | 11.30% |
前回POH3のランキングはC++,C#,Ruby,Javaという順位でしたが今回はJavaが大きく後退し、Perlが上位に入ってきました。JavaScriptは前回も最下位でしたが、POHでJavaScript使うには癖があるのでそれが原因かもしれません。
■各言語の問3の模範解答
以下編集部で選定した模範解答コードになります。今回はしゃくとり法によるコードを掲載します。次回のブログで解法解説及び、累積和による解説も掲載予定です。問題内容はpaizaオンラインハッカソンVol.4をご確認ください。
◆Java
paiza事務局作成コード
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); int n = sc.nextInt(); int[] m = new int[n]; for (int i=0; i<n; i++) m[i] = sc.nextInt(); int sum = 0; for (int i=0; i<t; i++) sum += m[i]; int res = sum; for (int i=0; i<n-t; i++) { sum = sum - m[i] + m[i+t]; res = Math.max(res, sum); } System.out.println(res); } }
◆PHP
paiza事務局作成コード
<?php fscanf(STDIN, "%d %d", $t, $n); $m = array(); for($i = 0; $i < $n; $i++){ fscanf(STDIN, "%d", $m[$i]); } $ans = array_sum(array_slice($m, 0, $t)); $tmp = $ans; for($i = 0; $i < $n-$t; $i++){ $tmp += $m[$t+$i]; $tmp -= $m[$i]; if($ans < $tmp) $ans = $tmp; } echo $ans;
◆Ruby
paiza事務局作成コード
strs = gets.split(' ') t, n = strs[0].to_i, strs[1].to_i m = Array.new(n) n.times {|i| m[i] = gets.to_i } ans = m.slice(0,t).inject(:+) tmp = ans (n-t).times{|i| tmp += m[t+i] tmp -= m[i] if ans < tmp ans = tmp end } puts ans
◆Python
paiza事務局作成コード
t, n = map(int, raw_input().split()) m = [] for i in xrange(n): m.append(input()) ans = sum(m[0:t:]) tmp = ans for i in xrange(n-t): tmp += m[t+i] tmp -= m[i] if ans < tmp: ans = tmp print ans
◆Perl
@s = split(/ /,<STDIN>); chomp($t = $s[0]); chomp($n = $s[1]); @m = (); for($i = 0; $i < $n; $i++){ chomp($tmp = <STDIN>); push @m, $tmp; } $ans = 0; for($i = 0; $i < $t; $i++){ $ans += $m[$i]; } $tmp = $ans; for($i = 0; $i < $n-$t; $i++){ $tmp += $m[$t+$i]; $tmp -= $m[$i]; if($ans < $tmp){ $ans = $tmp; } } print $ans;
◆C
paiza事務局作成コード
#include <stdio.h> #include <string.h> #include <math.h> int main(){ int t, n, ans = 0, i; int m[1000000]; int tmp = 0; scanf("%d %d", &t, &n); for(i = 0; i < n; i++){ scanf("%d", &tmp); m[i] = tmp; } for(i = 0; i < t; i++){ ans += m[i]; } tmp = ans; for(i = 0; i < n-t; i++) { tmp += m[t+i]; tmp -= m[i]; if(ans < tmp) { ans = tmp; } } printf("%d\n", ans); return 0; }
◆C++
paiza事務局作成コード
#include <iostream> using namespace std; int main() { int t, n; cin >> t >> n; int m[300000]; for(int i = 0; i < n; i++) { cin >> m[i]; } int ans = 0; for(int i = 0; i < t; i++) { ans += m[i]; } int tmp = ans; for(int i = 0; i < n-t; i++) { tmp += m[t+i]; tmp -= m[i]; if(ans < tmp){ ans = tmp; } } cout << ans << endl; return 0; }
◆C#
paiza事務局作成コード
using System; public class ClassName { static void Main(){ string[] str = Console.ReadLine().Split(' '); int t = int.Parse(str[0]); int n = int.Parse(str[1]); int[] m = new int[n]; for(int i = 0; i < n; i++){ m[i] = int.Parse(Console.ReadLine()); } int ans = 0; for(int i = 0; i < t; i++){ ans += m[i]; } int tmp = ans; for(int i = 0; i < n-t; i++) { tmp += m[t+i]; tmp -= m[i]; if(ans < tmp) ans = tmp; } Console.WriteLine(ans); } }
◆JavaScript
paiza事務局作成コード
var input_lines = ''; process.stdin.resume(); process.stdin.setEncoding('utf8'); process.stdin.on('data', function(chunk) { input_lines += chunk; }); process.stdin.on('end', function() { input_lines = input_lines.split('\n'); tmp = input_lines[0].split(" "); t = parseInt(tmp[0]) n = parseInt(tmp[1]) m = [] for(i=0; i<n; i++){ m.push(parseInt(input_lines[1+i])); } ans = m.slice(0,t).reduce(function(a,b){return a+b;}); tmp = ans; for(i=0; i<n-t; i++){ tmp += m[t+i]; tmp -= m[i]; if(ans < tmp){ ans = tmp; } } console.log(ans); });
■Beta版の解法コードサンプル
これ以降のはKoukiMinoさんのコードを掲載させていただきました。
KoukiMinoさんは、なんと全23言語で全クリアされたとの事!!(下記KoukiMinoさんのブログに全23言語の解答例も載ってます)
開催者としてうれし涙が出ます(;_;)/
◆Scala
KoukiMinoさんのコード
https://paiza.jp/poh/enkoi-ending/6a563ea3
object Main { val SIZE = 9999999 var buf: Array[Byte] = new Array[Byte](SIZE) var count: Int = 0 def read_int(): Int = { var r = 0 while (48 <= buf(count)) { r = r * 10 + buf(count) - 48 count += 1 } count += 1 r } def main(args: Array[String]) { var t: Int = 0 var n: Int = 0 var i: Int = 0 val buf_size = System.in.read(buf, 0, SIZE) t = read_int() n = read_int() val list = Array.ofDim[Int](n) list(0) = read_int() var before_sum = list(0) i = 1 while (i < t) { list(i) = read_int() before_sum += list(i) i += 1 } var answer = before_sum i = t while (i < n) { list(i) = read_int() before_sum -= list(i - t) before_sum += list(i) if (answer < before_sum) answer = before_sum i += 1 } println(answer) } }
◆Go
KoukiMinoさんのコード
https://paiza.jp/poh/enkoi-ending/920089b6
package main import( "fmt" "os" "text/scanner" "strconv" ) var sc scanner.Scanner func nextInt() int { sc.Scan() i, _ := strconv.Atoi(sc.TokenText()) return i } func main(){ sc.Init(os.Stdin) t := nextInt() n := nextInt() list := make([]int, n) list[0] = nextInt() before_sum := list[0] for i:=1;i<t;i++ { list[i] = nextInt() before_sum += list[i] } max := before_sum for i:=t;i<n;i++ { list[i] = nextInt() before_sum = before_sum - list[i-t] + list[i] if max < before_sum {max=before_sum} } fmt.Println(max) }
◆haskell
KoukiMinoさんのコード
https://paiza.jp/poh/enkoi-ending/d9c375aa
{-# LANGUAGE BangPatterns #-} {-# LANGUAGE ScopedTypeVariables #-} module Main where import Control.Monad import Control.Applicative ((<$>)) import qualified Data.ByteString.Char8 as B import Data.List import Data.Maybe main :: IO () main = do [t, n] <- map readInt . words <$> getLine -- list <- replicateM n $ readInt . head . words <$> getLine list :: [Int] <- map (fst . fromJust . B.readInt) . B.words <$> B.getContents let before_sum = sum $ take t list putStrLn $ show $ if n==t then before_sum else answer before_sum (drop t list) list readInt :: String -> Int readInt = read answer :: Int -> [Int] -> [Int] -> Int answer b! ts ns = answer' b ts ns where answer' b! [] (y:ys) = b answer' b! (x:xs) (y:ys) = max b (answer' b' xs ys) where b' = b - y + x
◆CoffeeScript
KoukiMinoさんのコード
https://paiza.jp/poh/enkoi-ending/1fd67f46
fs = require("fs") fd = process.stdin.fd content = "" BUFFER_SIZE = 4096 buffer = new Buffer(BUFFER_SIZE) bp = undefined content += buffer.slice(0, bp).toString() while (bp = fs.readSync(fd, buffer, 0, BUFFER_SIZE)) > 0 lines = content.toString().split("\n") first_line = lines[0].split(" ") t = first_line[0] * 1 n = first_line[1] * 1 max = 0 if t == n for i in [1..n] max += lines[i] * 1 else if t == 1 for i in [1..n] if max < lines[i] * 1 max = lines[i] * 1 else before_sum = lines[1] * 1 for i in [2..t] before_sum+=lines[i] * 1 max = before_sum for i in [(t+1)..n] before_sum=before_sum-lines[i-t]*1+lines[i]*1 if max < before_sum max = before_sum console.log max
◆Bash
KoukiMinoさんのコード
https://paiza.jp/poh/enkoi-ending/cab6c113
awk 'NR==1{t=$1;n=$2;b=0;i=0;max=0}1<NR&&t==n{max+=$1;i++}1<NR&&t<n{b=l[i++]=b+$1;if(i>=n){i=t-1;while(i++<n){if(max<b=l[i]-l[i-t]){max=b}}}}END{print max;}'
◆Erlang
KoukiMinoさんのコード
https://paiza.jp/poh/enkoi-ending/a99f4bc9
-module(main). -export([main/1]). main([_]) -> {ok, [ST, SN]} = io:fread("", "~s ~s"), T = list_to_integer(ST), N = list_to_integer(SN), {ok, DATA} = io:fread("",repeat("~d",N)), if T =:= N -> B = lists:sum(lists:sublist(DATA, T)), io:format(integer_to_list(B)); true -> B = lists:sum(lists:sublist(DATA, T)), A = ans(DATA,lists:sublist(DATA,T+1,N-T),B), io:format(integer_to_list(A)) end, io:format("~n",""), init:stop() . repeat(X,N) -> lists:flatten(lists:duplicate(N,X)). ans(_, [], B) -> B; ans([HX | TX],[HY | TY], B) -> max(B, ans(TX, TY, B - HX + HY)).
◆R
KoukiMinoさんのコード
https://paiza.jp/poh/enkoi-ending/c5140d65
d<-scan("stdin") t<-d[1] n<-d[2] if (t==n){ max<-sum(d[1:n+2]) } else { b<-sum(d[1:t+2]) max<-b for (i in (t+3):(n+2)){ b<-b-d[i-t]+d[i] if(max<b)max<-b } } cat(max) cat("\n")
◆COBOL
KoukiMinoさんのコード
https://paiza.jp/poh/enkoi-ending/b5517697
IDENTIFICATION DIVISION. program-id. ItoshiKoishi. DATA DIVISION. WORKING-STORAGE SECTION. 77 f PIC X(13). 77 t PIC 9(6). 77 n PIC 9(6). 77 b PIC 9(10). 77 i PIC 9(6). 77 ii PIC 9(6). 77 max PIC 9(10). 77 disp PIC ZZZZZZZZZ9. 01 disp_rec. 02 d PIC x(10). 02 dd REDEFINES d. 03 ddd PIC x(1) OCCURS 10 TIMES. 01 rec. 02 list PIC 9(5) OCCURS 300000 TIMES. PROCEDURE DIVISION. accept f. UNSTRING f DELIMITED BY ' ' INTO t n. move 0 to max IF t = n THEN PERFORM VARYING i FROM 0 BY 1 UNTIL i > t accept b IF i = n - 1 THEN COMPUTE b = b * 10 + 1 END-IF compute max = max + b END-PERFORM ELSE PERFORM VARYING i FROM 1 BY 1 UNTIL i > t accept list(i) compute b = b + list(i) END-PERFORM move b to max PERFORM UNTIL i > n accept list(i) compute ii = i - t compute b = b - list(ii) + list(i) IF max < b THEN move b to max END-IF compute i = i + 1 END-PERFORM END-IF. move max to disp. move disp to d. PERFORM VARYING i FROM 0 BY 1 UNTIL i > 10 if ddd(i) = '0' OR ddd(i) = '1' OR ddd(i) = '2' OR ddd(i) = '3' OR ddd(i) = '4' OR ddd(i) = '5' OR ddd(i) = '6' OR ddd(i) = '7' OR ddd(i) = '8' OR ddd(i) = '9' THEN IF i = 10 THEN DISPLAY ddd(i) ELSE DISPLAY ddd(i) WITH NO ADVANCING END-IF END-IF END-PERFORM.
※最終行に改行を入れないとエラーになります。
◆VB
KoukiMinoさんのコード
https://paiza.jp/poh/enkoi-ending/a5cda8eb
Imports System Imports System.Text Imports System.Runtime.InteropServices public class ItoshiKoishi Private Declare Function read Lib "libc" (ByVal fd As Integer, ByVal buf As IntPtr, ByVal count As Integer) As Integer Private Declare Function printf Lib "libc" (ByVal format As String, ByVal value As Integer) As Integer Private Shared Function read_int(ByRef pbuf() As Byte, ByRef pcount As Integer) As Integer Dim r As Integer = 0 While 48 <= pbuf(pcount) r = r * 10 + pbuf(pcount) - 48 pcount = pcount + 1 End While pcount = pcount + 1 Return r End Function shared function Main as integer Const valueLength As Integer = 1500014 Dim buffer As Byte() = New Byte(valueLength - 1) {} Dim count As Integer = 0 Dim pbuf As Object = Marshal.UnsafeAddrOfPinnedArrayElement(buffer, 0) read(0, pbuf, valueLength) Dim t As Integer Dim n As Integer Dim answer As Integer t = read_int(buffer, count) n = read_int(buffer, count) Dim list(n) As Integer list(0) = read_int(buffer, count) Dim i As Integer = 1 Dim before_sum As Integer before_sum = list(0) While i < t list(i) = read_int(buffer, count) before_sum = before_sum + list(i) i = i + 1 End While answer = before_sum While i < n list(i) = read_int(buffer, count) before_sum = before_sum + list(i) - list(i-t) If answer < before_sum Then answer = before_sum End If i = i + 1 End While printf("%d" & vbLf,answer) return 0 End function end class
◆F#
KoukiMinoさんのコード
https://paiza.jp/poh/enkoi-ending/82789068
open System let arg:String array=Console.ReadLine().Split(' ') let t=int(arg.[0]) let n=int(arg.[1]) let list:int array=Array.zeroCreate(n) let mutable before_sum=0 for i in 0..t-1 do list.[i] <- int(Console.ReadLine()) before_sum <- before_sum + list.[i] let mutable max = before_sum for i in t..n-1 do list.[i] <- int(Console.ReadLine()) before_sum <- before_sum + list.[i] - list.[i - t] if max<before_sum then max <- before_sum Console.WriteLine(max)
◆Python3
KoukiMinoさんのコード
https://paiza.jp/poh/enkoi-ending/f9714fe2
import sys (t,n) = list(map(int, sys.stdin.readline().split(' '))) lines = list(map(int, sys.stdin.read().splitlines())) b = sum(lines[0:t]) max = b for i,v in enumerate(lines[t:]): b += v - lines[i] if max < b: max = b print (max)
◆Clojure
KoukiMinoさんのコード
https://paiza.jp/poh/enkoi-ending/e0f886e9
(use '[clojure.string :only (split)]) (def lines (line-seq (java.io.BufferedReader. *in*))) (def first_line (split (first lines) #"\s")) (def t (#(Integer/parseInt %) (first first_line))) (def n (#(Integer/parseInt %) (last first_line))) (def sumdata (reductions + (map #(Integer/parseInt %) (drop 1 lines)))) (if (= n t) (println (last sumdata)) (do (loop [maxv 0 x sumdata y (drop t sumdata)] (if (empty? y) (println maxv) (do (recur (max maxv (- (first y) (first x))) (rest x) (rest y)) ) ) ) ) )
◆D
KoukiMinoさんのコード
https://paiza.jp/poh/enkoi-ending/eb951610
import std.stdio; char buf[1500014]; int read_int(){ static int count=0; int r=0; for(;48<=buf[count]&&57>=buf[count];)r=r*10+buf[count++]-48; count++; return r; } int main(){ stdin.rawRead(buf); int t = read_int(); int n = read_int(); int[] list = new int[n]; int max = 0; if (n==t){ for (int i=0;i<t;i++){ max+=read_int(); } } else { list[0]=read_int(); int b = list[0]; int i=1; for (;i<t;i++){ list[i]=read_int(); b+=list[i]; } max = b; for (;i<n;i++){ list[i]=read_int(); b+=list[i]-list[i-t]; if(max<b)max=b; } } writeln(max); return 0; }
※Objective-CはCと同じソースが通るので省きました。
■POH4をハックする!
最後に恒例のPOHハックの紹介をして終わりたいと思います。今回は3問とも一つのコードで通せる共通解がっ!!
POH Lite4 エンジニアでも恋がしたい-転職初日にぶつかった女の子が同僚だった件 共通解 - Qiita
<?php $line1 = trim(fgets(STDIN)); $line2 = trim(fgets(STDIN)); // ミッション1 事前テスト if($line1 === '4' && $line2 === '5'){ print('20');die(); } // ミッション1 Test case 1 if($line1 === '9'){ print('527');die(); } // ミッション1 Test case 2 if($line1 === '100' && $line2 === '88'){ print('5050');die(); } // ミッション1 Test case 3 if($line1 === '1' && $line2 === '0'){ print('0');die(); } // ミッション2 事前テスト if($line1 === '4'){ print('1700');die(); } // ミッション2 Test case 1 if($line1 === '10'){ print('1102460');die(); } // ミッション2 Test case 2 if($line1 === '1'){ print('1');die(); } // ミッション2 Test case 3 if($line1 === '100'){ print('12146428');die(); } // ミッション3 事前テスト if($line1 === '3 7'){ print('17');die(); } // ミッション3 Test case 1 if($line1 === '4 12'){ print('17859');die(); } // ミッション3 Test case 2 if($line1 === '10 120'){ print('66452');die(); } // ミッション3 Test case 3 if($line1 === '1 1'){ print('1');die(); } // ミッション3 Test case 4 if($line1 === '150000 300000' && $line2 === '2502'){ print('750041305');die(); } // ミッション3 Test case 5 if($line1 === '150000 300000'){ print('1124930000');die(); }
今回タイムアタックするほどの問題でもなかったので、テストケース少な目にしてましたが、共通解とはっ!!ぐぬぬ。
■まとめ
今回の企画では、マンガ形式でプログラミングでストーリーが変わる、という形式で、GoodパターンだけでなくBadパターンも結構手をかけて作ってみたのですが、楽しんでいただけたでしょうか。前回に引き続き競技勢からは物足りないという声もちらほら聞こえてきましたが、POHではより参加しやすいイベントを目指しているので、頂上決戦はまた別の機会にできればと思っています。
■プレゼントについて
ねるねるねるね10個セット、Raspberry-Piをのプレゼントについてですが、昨日(1月15日)に当選者にメールをさせて頂きましたのでご確認ください。連絡が取れない場合は再抽選となりますのでご注意ください。当選者の発表は賞品の発送をもって代えさせて頂きます。
paiza会員登録すると、下記の野田ちゃん壁紙3種類がダウンロードできます!是非お気軽にご登録下さい!
paizaは、技術を追い続けることが仕事につながり、スキルのある人がきちんと評価される場を作ることで、日本のITエンジニアの地位向上を目指したいと考えています。
自分のスキルを磨いていきたいと考えている方におすすめなのが「paizaラーニング」。オンラインでプログラミングしながらスキルアップできる入門学習コンテンツです。初心者でも楽しくプログラミングの基本を学ぶことができます。
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。