# zigzag conversion leetcode

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility).

Here is the solution using nested while loop:

var convert = function(s, numRows) {
if (numRows < 2) {
return s;
}
var matrix = [];
for (var i = 0; i < numRows; i++) {
matrix.push([]);
}
var k = 0;
var i = 0;
var res = '';
while (k < s.length) {
while(i < matrix.length && k < s.length) {
matrix[i].push(s[k]);  // down
i++;
k++;
}
i = i-2;
while (i >= 0 && k < s.length) {
matrix[i].push(s[k]) // up
i--;
k++;
}
i = i+2;
}
for (var i = 0; i < matrix.length; i++) {
for (var k = 0; k < matrix[i].length; k++) {
res += matrix[i][k];
}
}



Here is the solution mix while with for loop:

var convert = function(s, numRows) {
var len = s.length;
var matrix = [];

var matrix = [];
for (var i = 0; i < numRows; i++) {
matrix.push([]);
}

var i = 0, res='';
while(i < len) {
for(var idx = 0; idx < numRows && i < len; idx++) { // down
matrix[idx].push(s[i]);// add it to the matrix
i++; // then increase
}
for(var idx = numRows - 2; idx >=1 && i< len; idx--){ //up
matrix[idx].push(s[i++]); // another simple way and add the item then increase i
}
}

for(var i = 0; i < matrix.length; i++){
for(var j=0; j< matrix[i].length; j++){
res += matrix[i][j];
}
}

return res;
}


# Day of the Programmer

Marie invented a Time Machine and wants to test it by time-traveling to visit Russia on the Day of the Day of the Programmer (the 256th day of the year) during a year in the inclusive range from 1700 to 2700.

From 1700 to 2700, Russia’s official calendar was the Julian calendar; since 1919 they used the Gregorian calendar system. The transition from the Julian to Gregorian calendar system occurred in 1918, when the next day after January 31th was February 14 th . This means that in 1918, February 14th was the 32th day of the year in Russia.

In both calendar systems, February is the only month with a variable amount of days; it has 29 days during a leap year, and 28 days during all other years. In the Julian calendar, leap years are divisible by 4 ; in the Gregorian calendar, leap years are either of the following:

Divisible by 400.
Divisible by 4 and not divisible by 100.
Given a year, y, find the date of the 256th day of that year according to the official Russian calendar during that year. Then print it in the format dd.mm.yyyy, where dd is the two-digit day, mm is the two-digit month, and yyyy is y.

Input Format

A single integer denoting year y.

Constraints

Output Format

Print the full date of Day of the Programmer during year y in the format dd.mm.yyyy, where dd is the two-digit day, mm is the two-digit month, and yyyy is y.

Solution

 process.stdin.resume(); process.stdin.setEncoding('ascii'); var input_stdin = ""; var input_stdin_array = ""; var input_currentline = 0; process.stdin.on('data', function (data) { input_stdin += data; }); process.stdin.on('end', function () { input_stdin_array = input_stdin.split("\n"); main(); }); function readLine() { return input_stdin_array[input_currentline++]; } /////////////// ignore above this line //////////////////// function solve(year){ if (year == 1918) return '26.09.1918' else if (((year 1918) && (year%400 == 0 || ((year%4 == 0) && (year%100 != 0))))) return '12.09.' + year else return '13.09.' + year } function main() { var year = parseInt(readLine()); var result = solve(year); process.stdout.write(""+result+"\n"); } 

# Breaking the Records

Maria plays n games of college basketball in a season. Because she wants to go pro, she tracks her points scored per game sequentially in an array defined as score = [S0,S1,…,Sn-1] . After each game i , she checks to see if score Si breaks her record for most or least points scored so far during that season.

Given Maria’s array of scores for a season of n games, find and print the number of times she breaks her record for most and least points scored during the season.

Note: Assume her records for most and least points at the start of the season are the number of points scored during the first game of the season.

Input Format

The first line contains an integer denoting (the number of games).
The second line contains space-separated integers describing the respective values of .

Solution

 process.stdin.resume(); process.stdin.setEncoding('ascii'); var input_stdin = ""; var input_stdin_array = ""; var input_currentline = 0; process.stdin.on('data', function (data) { input_stdin += data; }); process.stdin.on('end', function () { input_stdin_array = input_stdin.split("\n"); main(); }); function readLine() { return input_stdin_array[input_currentline++]; } /////////////// ignore above this line //////////////////// function getRecord(s){ // Complete this function var result = []; var countMax=0, countMin=0 ,max = s[0], min = s[0]; for(var i=1; i max){ max = s[i]; countMax++; } if(s[i] < min){ min = s[i]; countMin++; } } result.push(countMax); result.push(countMin); return result; } function main() { var n = parseInt(readLine()); s = readLine().split(' '); s = s.map(Number); var result = getRecord(s); console.log(result.join(" ")); } 

# Between Two Sets

Consider two sets of positive integers,  and . We say that a positive integer, , is between sets  and  if the following conditions are satisfied:

1. All elements in  are factors of .
2.  is a factor of all elements in .

In other words, some  is between  and  if that value of  satisfies  for every  in  and also satisfies  for every  in . For example, if  and , then our possible  values are and .

Given  and , find and print the number of integers (i.e., possible ‘s) that are between the two sets.

Input Format

The first line contains two space-separated integers describing the respective values of  (the number of elements in set ) and  (the number of elements in set ).
The second line contains  distinct space-separated integers describing .
The third line contains  distinct space-separated integers describing .

Constraints

Output Format

Print the number of integers that are considered to be between  and .

Sample Input

2 3
2 4
16 32 96


Sample Output

3


Solution

process.stdin.resume();
process.stdin.setEncoding('ascii');

var input_stdin = "";
var input_stdin_array = "";
var input_currentline = 0;

process.stdin.on('data', function (data) {
input_stdin += data;
});

process.stdin.on('end', function () {
input_stdin_array = input_stdin.split("\n");
main();
});

return input_stdin_array[input_currentline++];
}

/////////////// ignore above this line ////////////////////

function getTotalX(a, b) {
var maxA = 0, minB = 101, count=0, n=a.length, m=b.length;

for(var a_i=0; a_i  maxA ? tmpa : maxA;
}

for(var b_i=0; b_i < m; b_i++){
var tmpb = b[b_i];
minB = tmpb < minB ? tmpb : minB;
}

for(var i = maxA; i <= minB; i += maxA)
{
var factorA = true, factorB = true;
//Check if all A are a factor of i
for(var ii = 0; ii < n; ii++){
if(i%a[ii] !=0){
factorA = false;
continue;
}
}

//Check if i is a factor of all B
for(var jj = 0; jj < m; jj++){
if(b[jj]%i != 0){
factorB = false;
continue;
}
}

if(factorA && factorB)
count++;
}

return count;

}

function main() {
var n_temp = readLine().split(' ');
var n = parseInt(n_temp[0]);
var m = parseInt(n_temp[1]);
a = readLine().split(' ');
a = a.map(Number);
b = readLine().split(' ');
b = b.map(Number);
var total = getTotalX(a, b);
process.stdout.write("" + total + "\n");

}


# Apple and Orange

Sam’s house has an apple tree and an orange tree that yield an abundance of fruit. In the diagram below, the red region denotes his house, where  is the start point and  is the end point. The apple tree is to the left of his house, and the orange tree is to its right. You can assume the trees are located on a single point, where the apple tree is at point  and the orange tree is at point .

When a fruit falls from its tree, it lands  units of distance from its tree of origin along the -axis. A negative value of  means the fruit fell  units to the tree’s left, and a positive value of  means it falls  units to the tree’s right.

Given the value of  for  apples and  oranges, can you determine how many apples and oranges will fall on Sam’s house (i.e., in the inclusive range )? Print the number of apples that fall on Sam’s house as your first line of output, then print the number of oranges that fall on Sam’s house as your second line of output.

Input Format

The first line contains two space-separated integers denoting the respective values of  and .
The second line contains two space-separated integers denoting the respective values of  and .
The third line contains two space-separated integers denoting the respective values of  and .
The fourth line contains  space-separated integers denoting the respective distances that each apple falls from point .
The fifth line contains  space-separated integers denoting the respective distances that each orange falls from point .

Constraints

Output Format

Print two lines of output:

1. On the first line, print the number of apples that fall on Sam’s house.
2. On the second line, print the number of oranges that fall on Sam’s house.

Sample Input 0

7 11
5 15
3 2
-2 2 1
5 -6


Sample Output 0

1
1


Explanation 0

The first apple falls at position .
The second apple falls at position .
The third apple falls at position .
The first orange falls at position .
The second orange falls at position .
Only one fruit (the second apple) falls within the region between  and , so we print  as our first line of output.
Only the second orange falls within the region between  and , so we print  as our second line of output.

Solution

process.stdin.resume();
process.stdin.setEncoding('ascii');

var input_stdin = "";
var input_stdin_array = "";
var input_currentline = 0;

process.stdin.on('data', function (data) {
input_stdin += data;
});

process.stdin.on('end', function () {
input_stdin_array = input_stdin.split("\n");
main();
});

return input_stdin_array[input_currentline++];
}

/////////////// ignore above this line ////////////////////

function main() {
var s_temp = readLine().split(' ');
var s = parseInt(s_temp[0]);
var t = parseInt(s_temp[1]);
var a_temp = readLine().split(' ');
var a = parseInt(a_temp[0]);
var b = parseInt(a_temp[1]);
var m_temp = readLine().split(' ');
var m = parseInt(m_temp[0]);
var n = parseInt(m_temp[1]);
apple = readLine().split(' ');
apple = apple.map(Number);
orange = readLine().split(' ');
orange = orange.map(Number);

var countApple = 0;
var countOrange = 0;
apple.forEach(function(e) {
if((a+e)>= s && (a+e)<=t) countApple++; }); orange.forEach(function(e) { if((b+e)>= s && (b+e)<=t)
countOrange++;
});

process.stdout.write(countApple + "\n" + countOrange);
}

HackerLand University has the following grading policy:

• Every student receives a  in the inclusive range from  to .
• Any  less than  is a failing grade.

Sam is a professor at the university and likes to round each student’s  according to these rules:

• If the difference between the  and the next multiple of  is less than , round  up to the next multiple of .
• If the value of  is less than , no rounding occurs as the result will still be a failing grade.

For example,  will be rounded to  but  will not be rounded because the rounding would result in a number that is less than .

Given the initial value of  for each of Sam’s  students, write code to automate the rounding process. For each , round it according to the rules above and print the result on a new line.

Input Format

The first line contains a single integer denoting  (the number of students).
Each line  of the  subsequent lines contains a single integer, , denoting student ‘s grade.

Constraints

Output Format

For each  of the  grades, print the rounded grade on a new line.

Sample Input 0

4
73
67
38
33


Sample Output 0

75
67
40
33

Solution

function solve(grades){
var result = [];
for(var i= 1; i<grades.length; i++){
if(grades[i] < 38 || grades[i] % 5 <3)
else
}
return result;
}

function main() {
var n = parseInt(readLine());
var grades = [];
}
var result = solve(grades);
console.log(result.join("\n"));
}


# Birthday Cake Candles

Colleen is turning  years old! Therefore, she has  candles of various heights on her cake, and candle  has height . Because the taller candles tower over the shorter ones, Colleen can only blow out the tallest candles.

Given the  for each individual candle, find and print the number of candles she can successfully blow out.

Input Format

The first line contains a single integer, , denoting the number of candles on the cake.
The second line contains  space-separated integers, where each integer  describes the height of candle .

Constraints

Output Format

Print the number of candles Colleen blows out on a new line.

Sample Input 0

4
3 2 1 3


Sample Output 0

2


Explanation 0

We have one candle of height , one candle of height , and two candles of height . Colleen only blows out the tallest candles, meaning the candles where . Because there are  such candles, we print  on a new line.

process.stdin.resume();
process.stdin.setEncoding('ascii');

var input_stdin = "";
var input_stdin_array = "";
var input_currentline = 0;

process.stdin.on('data', function (data) {
input_stdin += data;
});

process.stdin.on('end', function () {
input_stdin_array = input_stdin.split("\n");
main();
});

return input_stdin_array[input_currentline++];
}

/////////////// ignore above this line ////////////////////

function birthdayCakeCandles(n, ar) {

var max=ar[0];
var num=1;
for (var i=1;i<n; i++){
if (ar[i]>max){
max=ar[i];
num=1;
}
else if (ar[i]==max) num++;
}
return num;

}

function main() {
var n = parseInt(readLine());
ar = readLine().split(' ');
ar = ar.map(Number);
var result = birthdayCakeCandles(n, ar);
process.stdout.write("" + result + "\n");

}



# Mini-Max Sum

Given five positive integers, find the minimum and maximum values that can be calculated by summing exactly four of the five integers. Then print the respective minimum and maximum values as a single line of two space-separated long integers.

Input Format

A single line of five space-separated integers.

Constraints

Each integer is in the inclusive range .

Output Format

Print two space-separated long integers denoting the respective minimum and maximum values that can be calculated by summing exactly four of the five integers. (The output can be greater than 32 bit integer.)

Sample Input

1 2 3 4 5
Sample Output

10 14

 function main() { arr = readLine().split(' '); arr = arr.map(Number); var sortedArr = arr.sort(); var sum = sortedArr.reduce(function(sum, value) { return sum + value; }, 0); process.stdout.write((sum - sortedArr[4]) + ' ' + (sum - sortedArr[0]));

}

# Angular 2 Tutorial – movies App

Last time I wrote a blog created the MovieAPI and now I am using that API as back end services to create an angular 2 app.

the final source code could find at my github repository.  here is the link download

For the MovieAPI open it, build it will install the packages automatically, then run the service first.

After the service is done, go to the angular2 folder, open command window

–run npm install,

— npm start

It will look like this:

Step 1 : Setting up your angular 2 application, I already have a blog  click here to found it. Or also could download from the source file from https://github.com/angular/quickstart/blob/master/README.md but it add a lot of unnecessary setting, probably confuse for beginning learner.

It was better do few times manually setting it up to get understand all of the necessary for start anguar 2 application.

Step 2:  In angualr 2 everything is component, for me normally like to create the service first. I just create a file named movies.service.ts under folder movies


import {Injectable} from 'angular2/core';
import {IMovie} from './movie';
import {Http, RequestOptions , Response, Headers} from 'angular2/http';
import {Observable} from 'rxjs/Observable';

@Injectable()
export class MovieService {
private _movieUrl = 'http://localhost:53871/api/movies';

constructor(private _http: Http) { }

getMovies(): Observable<IMovie[]> {
return this._http.get(this._movieUrl)
.map((response: Response) => <IMovie[]>response.json()) //arrow function, tranceform response to json object and is array of IMovie[]
.do(data => console.log("All: " + JSON.stringify(data))) //for debug
.catch(this.handleError);
}

createMovie(movie: IMovie): Observable {
let body = JSON.stringify(movie);
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });

return this._http.post(this._movieUrl, body, options)
.map(this.extractData)
.catch(this.handleError);
}

private extractData(res: Response) {
let body = res.json();
return body.data || {};
}

private handleError(error: Response) {
console.error(error);
return Observable.throw(error.json().error || 'Server error');
}
}



In there MovieService I have a IMovie here is my movie.ts I put it in the same folder with MovieService .


//interface won't compile to js file, it just for typescript do type checking
export interface IMovie {
movieId: number;
title: string;
genre: string;
classification: string;
releaseDate: number;
rating: number;
cast: string[];

}

export class Movie implements IMovie {
movieId: number;
title: string;
genre: string;
classification: string;
releaseDate: number;
rating: number;
cast: string[];
}


Step 3: Inject the services.
Go to the app.component.ts this is our container component, for anguar 2 only need inject once, then all of the nest container could using it ( by import it ).

Inject a service has two steps:

1) import the file into the app.component,

2) Inject it as providers

here is my app.component.ts

Step 4: Create the movies-list.component.ts


//for using component, simply import it into this file
import {Component, OnInit} from 'angular2/core';
import { ROUTER_DIRECTIVES } from 'angular2/router';

import {IMovie} from './movie';
import {MovieService} from './movies.service';
import {MovieFilterPipe} from './movie-filter.pipe';
import { StarComponent } from '../shared/star.component';

@Component({
selector: 'sz-movies',
templateUrl: 'app/movies/movies-list.component.html',
styleUrls: ['app/movies/movies-list.component.css'],
pipes: [MovieFilterPipe],
directives: [StarComponent, ROUTER_DIRECTIVES]

})
export class MovieListComponent implements OnInit {
pageTitle: string = 'Movie List';

listFilter: string;
errorMessage: string;
movies: IMovie[];

constructor(private _movieService: MovieService) {

}

ngOnInit(): void {
this._movieService.getMovies()
.subscribe(
movies => this.movies = movies,
error => this.errorMessage = error);
}

}



here is the movies-list.component.html

for this component I have a nested StarComponent.

Setp 5: create nested StarComponent, here is the star.component.ts under the share folder


import { Component, OnInit, Input} from 'angular2/core';
@Component({
selector: 'sz-star',
templateUrl: 'app/shared/star.component.html',
styleUrls: ['app/shared/star.component.css']
})
export class StarComponent implements OnInit {
@Input() rating: number;
starWidth: number;
ngOnInit(): void {
this.starWidth = this.rating * 86 / 5;
}
}


star.component.html

css:

In angular 2: data flow is unidirectional, for passing data from view to the class

first: you passing data into the directive could bind it to the property

Second: need import the Input from angular2/core, and bind it to the property

Now, one nested movies-list.component and nested star.componet down.

Now using the same steps create the MovieCreateComponent


import {Component, OnInit} from 'angular2/core';

import {IMovie, Movie} from '../movie';
import {Router} from 'angular2/router';
import {MovieService} from '../movies.service';

@Component({
templateUrl: 'app/movies/create/movie-create.component.html'
})

export class MovieCreateComponent implements OnInit {
title: string = 'Create New Movie';
newMovie: IMovie;

constructor(
private _moviesService: MovieService,
private _router: Router
) { }

ngOnInit() {
this.newMovie = new Movie;
}

createMovie(event) {
let _this = this;

this._moviesService.createMovie(this.newMovie)
.subscribe(function () {
_this._router.navigate(['Movies']);
});
}

cancelCreate(event) {
this._router.navigate(['Movies']);
}

}
Router:

In the index.html page, put the baseurl:

Done, have fun!



# React & ES6 project dev enviroment setup

In this day, the JavaScript project set up it was a big complex, and this tutorial will show you how to set up the environment for build react SPA working with ES6.

First, create package.json file, here is the common using packages I was included, and I will use npm start to run the project instead of gulp. so the packages has included the scripts part with in it.


{
"name": "react-Demo",
"version": "1.0.0",
"description": "react kit for React and es6 demo project",
"scripts": {
"prestart":"babel-node tools/startMessage.js",
"start":"npm-run-all --parallel test:watch open:src lint:watch",
"open:src": "babel-node tools/srcServer.js",
"lint": "node_modules/.bin/esw webpack.config.* src tools",
"lint:watch": "npm run lint -- --watch",
"test": "mocha --reporter progress tools/testSetup.js \"src/**/*.spec.js\"",
"test:watch": "npm run test -- --watch"
},
"author": "Sandy Zhang",
"dependencies": {
"babel-polyfill": "6.8.0",
"bootstrap": "3.3.6",
"jquery": "2.2.3",
"react": "15.0.2",
"react-dom": "15.0.2",
"react-redux": "4.4.5",
"react-router": "2.4.0",
"react-router-redux": "4.0.4",
"redux": "3.5.2",
"redux-thunk": "2.0.1",
"toastr": "2.1.2"
},
"devDependencies": {
"babel-cli": "6.8.0",
"babel-core": "6.8.0",
"babel-plugin-react-display-name": "2.0.0",
"babel-preset-es2015": "6.6.0",
"babel-preset-react": "6.5.0",
"babel-preset-react-hmre": "1.1.1",
"babel-register": "6.8.0",
"colors": "1.1.2",
"compression": "1.6.1",
"cross-env": "1.0.7",
"enzyme": "2.2.0",
"eslint": "2.9.0",
"eslint-plugin-import": "1.6.1",
"eslint-plugin-react": "5.0.1",
"eslint-watch": "2.1.11",
"eventsource-polyfill": "0.9.6",
"expect": "1.19.0",
"express": "4.13.4",
"extract-text-webpack-plugin": "1.0.1",
"jsdom": "8.5.0",
"mocha": "2.4.5",
"nock": "8.0.0",
"npm-run-all": "1.8.0",
"open": "0.0.5",
"redux-immutable-state-invariant": "1.2.3",
"redux-mock-store": "1.0.2",
"rimraf": "2.5.2",
"webpack": "1.13.0",
"webpack-dev-middleware": "1.6.1",
"webpack-hot-middleware": "2.10.0"
}
}


step 2: setup the dev server with webpack, and for the developing tools all put it inside the tools folder.

• in the root project create the webpack.config.dev.js, there are the standards

import webpack from 'webpack';
import path from 'path';

export default {
debug: true,
devtool: 'cheap-module-eval-source-map',
noInfo: false,
entry: [
'eventsource-polyfill', // necessary for hot reloading with IE
'./src/index'
],
target: 'web',
output: {
path: __dirname + '/dist', // Note: Physical files are only output by the production build task npm run build.
publicPath: '/',
filename: 'bundle.js'
},
devServer: {
contentBase: './src' //the folder put the source files
},
plugins: [
new webpack.HotModuleReplacementPlugin(),//for the hot load
new webpack.NoErrorsPlugin()
],
module: {
{test: /\.js$/, include: path.join(__dirname, 'src'), loaders: ['babel']}, {test: /(\.css)$/, loaders: ['style', 'css']},
{test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file"}, {test: /\.(woff|woff2)$/, loader: "url?prefix=font/&limit=5000"},
{test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=application/octet-stream"}, {test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=image/svg+xml"}
]
}
};



step 3: create a file named srcServer.js inside the tools, npm scripts already has the command will run to open the dev server.


import express from 'express';
import webpack from 'webpack';
import path from 'path';
import config from '../webpack.config.dev';
import open from 'open';

/* eslint-disable no-console */

const port = 3000;
const app = express();
const compiler = webpack(config);

app.use(require('webpack-dev-middleware')(compiler, {
noInfo: true,
publicPath: config.output.publicPath
}));

app.use(require('webpack-hot-middleware')(compiler));

app.get('*', function(req, res) {
res.sendFile(path.join( __dirname, '../src/index.html'));
});

app.listen(port, function(err) {
if (err) {
console.log(err);
} else {
open(http://localhost:\${port});
}
});



step 4: for people like to set up testing driver developer, create a testSetp.js inside the tools folder:


process.env.NODE_ENV = 'test';

require('babel-register')();

require.extensions['.css'] = function () {return null;};
require.extensions['.png'] = function () {return null;};
require.extensions['.jpg'] = function () {return null;};

var jsdom = require('jsdom').jsdom;

var exposedProperties = ['window', 'navigator', 'document'];

global.document = jsdom('');
global.window = document.defaultView;
Object.keys(document.defaultView).forEach((property) => {
if (typeof global[property] === 'undefined') {
exposedProperties.push(property);
global[property] = document.defaultView[property];
}
});

global.navigator = {
userAgent: 'node.js'
};

documentRef = document;



in the script I have

  "test": "mocha --reporter progress tools/testSetup.js \"src/**/*.spec.js\"",

will run with it.

step 5: setup the .babelrc in the root project

{
"presets": ["react", "es2015"],
"env": {
"development": {
"presets": ["react-hmre"]
}
}
}


step 6 : setup .eslintrc inside the root project


{
"extends": [
"eslint:recommended",
"plugin:import/errors",
"plugin:import/warnings"
],
"plugins": [
"react"
],
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"env": {
"es6": true,
"browser": true,
"node": true,
"jquery": true,
"mocha": true
},
"rules": {
"quotes": 0,
"no-console": 1,
"no-debugger": 1,
"no-var": 1,
"semi": [1, "always"],
"no-trailing-spaces": 0,
"eol-last": 0,
"no-unused-vars": 0,
"no-underscore-dangle": 0,
"no-lone-blocks": 0,
"jsx-quotes": 1,
"react/display-name": [ 1, {"ignoreTranspilerName": false }],
"react/forbid-prop-types": [1, {"forbid": ["any"]}],
"react/jsx-boolean-value": 1,
"react/jsx-closing-bracket-location": 0,
"react/jsx-curly-spacing": 1,
"react/jsx-indent-props": 0,
"react/jsx-key": 1,
"react/jsx-max-props-per-line": 0,
"react/jsx-no-bind": 1,
"react/jsx-no-duplicate-props": 1,
"react/jsx-no-literals": 0,
"react/jsx-no-undef": 1,
"react/jsx-pascal-case": 1,
"react/jsx-sort-prop-types": 0,
"react/jsx-sort-props": 0,
"react/jsx-uses-react": 1,
"react/jsx-uses-vars": 1,
"react/no-danger": 1,
"react/no-did-mount-set-state": 1,
"react/no-did-update-set-state": 1,
"react/no-direct-mutation-state": 1,
"react/no-multi-comp": 1,
"react/no-set-state": 0,
"react/no-unknown-property": 1,
"react/prefer-es6-class": 1,
"react/prop-types": 1,
"react/react-in-jsx-scope": 1,
"react/require-extension": 1,
"react/self-closing-comp": 1,
"react/sort-comp": 1,
"react/wrap-multilines": 1
}
}



there are already have script command could run check the lint


"lint": "node_modules/.bin/esw webpack.config.* src tools",


Now could start create react components
> create index.html inside the src folder

<!DOCTYPE html>
<html lang=”en”>
<body>

/bundle.js
</body>
</html>

create index.js file


/*eslint-disable import/default */
import 'babel-polyfill';
import React from 'react';
import { render } from 'react-dom';
import { Router, browserHistory } from 'react-router';
import routes from './routes';
import './styles/styles.css'; //Webpack can import CSS files too!
import '../node_modules/bootstrap/dist/css/bootstrap.min.css';

render(
,
document.getElementById('app')
);


create route.js inside the src folder


import React from 'react';
import { Route, IndexRoute } from 'react-router';
import App from './components/App';
import HomePage from './components/home/HomePage';

export default (

);



create components folder inside the src, then create App.js inside it


// This component handles the App template used on every page.
import React, {PropTypes} from 'react';

class App extends React.Component {
render() {
return (



{this.props.children}

); } } App.propTypes = { children: PropTypes.object.isRequired }; export default App;

separate pages by folder,create home, about folder

for HomePage.js


import React from 'react';
import {Link} from 'react-router';

class HomePage extends React.Component {
render() {
return (



# React Demo

React, Redux and React Router in ES6 for ultra-responsive web apps.

); } } export default HomePage;


import React from 'react';

class AboutPage extends React.Component {
render() {
return (

This application uses React, Redux, React Router and a variety of other helpful libraries.

); } } export default AboutPage;

source code here:

https://github.com/sandywebdesigner/react_es6_starter_demo

now run npm start it will open the page in the brower, and you could start code now. have fun!

the default page will look like this: