paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

【結果発表】これで私は結婚できた!嫁を射止めたコード23選

2014年12月3日より開始したpaizaオンラインハッカソン Vol.4 Lite「エンジニアでも恋がしたい!」ですが、2015年1月7日いっぱいをもって開催期間を終了いたしました。(コードの実行自体は引き続き可能です)。 

今回のオンラインハッカソンは前回に引き続き、誰でも参加しやすいように問題の難易度を低めにしました。またシリーズ初となる複数問題形式で、解答結果による物語(まんが)が分岐していくものでしたが、全パターンみられましたでしょうか。多くの方から結婚報告をいただき、ありがとうございました!

↓結婚報告例


今回も数多くご参加いただき無事オンラインハッカソンを終える事が出来ました! 今回は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問とも一つのコードで通せる共通解がっ!!

PHP - 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種類がダウンロードできます!是非お気軽にご登録下さい!
f:id:paiza:20150114220025j:plain
f:id:paiza:20150114220105j:plain
f:id:paiza:20150114220120j:plain




paizaではスキルのあるエンジニアがきちんと評価されるようにし、技術を追い続ける事が仕事につながるようにする事で、日本のITエンジニアの地位向上を図っていければと考えています。特にpaizaではWebサービス提供企業などでもとめられる、システム開発力や、テストケースを想定できるかの力(テストコードを書く力)などが問われる問題を出題しています。

テストの結果によりS・A・B・C・D・Eの6段階でランクが分かります。自分のプログラミングスキルを客観的に知りたいという方は是非チャレンジしてみてください。

http://paiza.jp


プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編