2016년 7월 25일 월요일

Particle electron

Particle electron activate

Electron에 포함된 sim카드의 activation과정이 particle android app에서는 동작을 하지 않아 setup.particle.io 에서 진행하여 activate 성공함.
요금플렌은 월 4.5달러로 한달 1메가 플렌이며. 타 국가에 비해 많이 비싼 가격으로 책정되어있다.

2016년 1월 4일 월요일

Android에서 At-symbol(@) 와 Question-Mark(?)의 차이점.

At-symbol(@)
Resource를 참조하는 기호로 현재 프로젝트나 Android Framework 내에 있는 Resource를 참고 할 때 사용함

Question-Mark(?)
현재 정의 중인 Theme 내에 있는 사항을 참조 할 때 사용됨


res/value/styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="CustomTheme">       
    <item name="android:windowNoTitle">true</item>
    <item name="windowFrame">@drawable/screen_frame</item>
    <item name="windowBackground">@drawable/screen_background_white</item>
    <item name="panelForegroundColor">#FF000000</item>
    <item name="panelBackgroundColor">#FFFFFFFF</item>
    <item name="panelTextColor">?panelForegroundColor</item>
    <item name="panelTextSize">14</item>
    <item name="menuItemTextColor">?panelTextColor</item>
    <item name="menuItemTextSize">?panelTextSize</item>
  </style>
</resources>

비트 연산으로 홀수 짝수 구분하기

n & 1

입력 숫자 n에서 홀수, 짝수를 결정 하는 것은 마지막 자리 숫자이기 때문에 
위 연산의 결과가 1이면 홀수, 0이면 짝수 이다.


ex 1)
10 이라는 10진수 정수를 예로 들면
10은 2진수로 표현하면 1010 이고,

10 & 1 은 1010 & 1과 동일함.

그럼 1010의 마지막 자리는 0 이고, 0과 1을 & 연산 하면 0 이기 때문에
짝수가 된다.

ex 2)
11은 2진수로 1011이고,
11 & 1 는 1011 & 1 와 동일하고

마지막 자리수는 1이기 때문에 1 & 1 = 1 이기 때문에 홀수 이다.

ex 3)
45라면 2진수로 101101 이기 때문에
45 & 1 은  1 & 1이 되기 때문에 결과는 0으로 홀수 가 된다.


정리)
10 == 1010
1010 & 1 == 0

11 == 1011,
1011 & 1 == 1

45 == 101101
101101 & 1 == 0

2015년 10월 28일 수요일

[Basic Skill] 순열 만들기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <stdio.h>
 
 
// 배열 출력하기
void printSet(int array[], int size){    
    for (int i = 1; i <= size; i++)
        printf("%d ", array[i]);
    printf("\n");
 
    return;
}
 
// 반복문과 스택을 이용한 순열 구하기
void printPowerset(int n){
    int stack[10], k;
 
    stack[0= 0// 0은 제외
    k = 0;
 
    while (1){
        if (stack[k]<n){
            stack[k + 1= stack[k] + 1;
            k++;
        }
 
        else{
            stack[k - 1]++;
            k--;
        }
 
        if (k == 0)
            break;
 
        printSet(stack, k);
    }
 
    return;
}
 
// 재귀를 통한 순열 구하기
void powersetRec(int s[], int k, int m, int n) {
    if (m <= n) {
        s[k + 1= m;
        printSet(s, k + 1);
        powersetRec(s, k + 1, m + 1, n); /* with m */
        powersetRec(s, k, m + 1, n); /*  without m */
    }
}
 
 
void binaryPowerSet(){
    int i, j;
 
    char arr[4= { 'a''b''c''d' };
 
    int n = 4;
 
 
    for (i = 0; i < (1 << (n)); i++){
 
        for (j = 0; j < n; j++){
 
            if (i & (1 << j)){
 
                //printf("%c ", arr[j]);
                printf("%d ", j+1);
 
            }
 
        }
 
        printf("\n");
 
    }
}
 
int main(){
 
    int s[6]; // stack
    powersetRec(s, 014);
    
    //printPowerset(4);
 
    binaryPowerSet();
 
    return 0;
}
 
void rec(int s[], int k, int m, int n){
    if (m <= n){
        s[k + 1= m;
        printSet(s, k + 1);
        rec(s, k + 1, m + 1, n);
        rec(s, k, m + 1, n);
    }
}
 
 
cs

2015년 9월 3일 목요일

[Android] 이미지 대표 색상 추출 하기

안드로이드에서 bitmap의 대표색상을 추출은
안드로이드 support library v7에 포함되어 있는 Palette Class를 통해 가능하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
int color = 0xFFFFFF// default white
Palette.Builder pb = Palette.from(bitmap);
Palette palette = pb.generate();
if (palette != null && palette.getLightVibrantSwatch() != null) {
    color = palette.getLightVibrantSwatch().getRgb();
}else if (palette != null && palette.getDarkVibrantSwatch() != null) {
    color = palette.getDarkVibrantSwatch().getRgb();
else if (palette != null && palette.getDarkMutedSwatch() != null) {
    color = palette.getDarkMutedSwatch().getRgb();
else if (palette != null && palette.getLightMutedSwatch() != null) {
    color = palette.getLightMutedSwatch().getRgb();
}
Log.e(TAG, "dominantColorFromBitmap = " + Integer.toString(color, 16));
cs

정확한 이유는 모르겠지만 bitmap에서 추출할 수 있는 대표색의 종류가 밝은색, 어두운색 등으로 나뉘지만 모든 색상이 다 추출되지는 않기 때문에 우선순위를 두어 추출하길 권장 한다.


2015년 7월 12일 일요일

수학자 문제 풀이

//
//  main.cpp
//  AlgoTest
//
//  Created by Lonnie Noel on 2015. 7. 12..
//  Copyright (c) 2015 Lonnie Noel. All rights reserved.
//

#include <iostream>

const int N = 8; // pie
const int K = 4; // mathmatic


int currentMathmaticIndex=K-1;


int nCount = 0;
int MaxLast_K = (N-K)+1;
int MaxFirst_K = (N/K);

int Arr[K];


void CheckPieCount(int CurrentIndex)
{
    if(CurrentIndex < 1)
    {
        //printf("[%d]범위에서 벗어났습니다 \n", CurrentIndex);
        return;
    }
    
    int nPieCount = 0;
    for(int i = Arr[CurrentIndex]; i>= MaxFirst_K; i--)
    {
        //printf("for 테스트 : %d \n", i);
        if(Arr[CurrentIndex] < Arr[CurrentIndex-1])
        {
            //printf("%d 최대 갯수는 : %d 입니다 \n", CurrentIndex, i);
            break;
        }
        
        nPieCount = 0;
        printf("CurrentIndex : %d \n", CurrentIndex );
        for(int j= 0; j < K; j++)
        {
            printf("[arr[%d] : %d \n", j, Arr[j]);
            nPieCount += Arr[j];
            
        }
        
        if(nPieCount == N)
        {
            if(Arr[CurrentIndex] != Arr[CurrentIndex-1])
                nCount++;
           
            if(Arr[CurrentIndex]-1 >= Arr[CurrentIndex-1]+1)
            {
                //if((Arr[CurrentIndex]-1) > (Arr[CurrentIndex-1]+1))
                {
                    printf("[CurrentIndex] : %d || [CurrentIndex-1] : %d \n", (Arr[CurrentIndex]-1), (Arr[CurrentIndex-1]+1));
                    //nCount++;
                    Arr[CurrentIndex] --;
                    Arr[CurrentIndex-1] ++;
                }
            }
            else
            {
                break;
            }
            
        }
        
    }
    
    CheckPieCount(CurrentIndex-1);
    
}

int main(int argc, const char * argv[]) {
    // insert code here...
    std::cout << "Hello, World!\n";
    
    
    
    //배열 초기화
    for(int i = 0; i < K; i++)
    {
        if(i == (K-1))
        {
            Arr[i] = MaxLast_K;
        }
        else
        {
            Arr[i] = 1;
        }
    }
    
    CheckPieCount(currentMathmaticIndex);
    
    if(N % K == 0)
    {
        nCount ++;
    }
    
    
    printf("Output : %d \n", nCount);
    
    return 0;
}


2015년 3월 18일 수요일

[Algorithm] stack을 이용한 순열(모든 부분집합, power set) 구하기

Stack을 이용한 순열 구하는 방법으로
아래와 같이 사용할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdio.h>
 
 
// 배열 출력하기
void printSet(int array[], int size){    
    for (int i = 1; i <= size; i++)
        printf("%d ", array[i]);
    printf("\n");
 
    return;
}
 
// 반복문과 스택을 이용한 순열 구하기
void printPowerset(int n){
    int stack[10], k;
 
    stack[0= 0// 0은 제외
    k = 0;
 
    while (1){
        if (stack[k]<n){
            stack[k + 1= stack[k] + 1;
            k++;
        }
 
        else{
            stack[k - 1]++;
            k--;
        }
 
        if (k == 0)
            break;
 
        printSet(stack, k);
    }
 
    return;
}
 
// 재귀를 통한 순열 구하기
void powersetRec(int s[], int k, int m, int n) {
    if (m <= n) {
        s[k + 1= m;
        printSet(s, k + 1);
        powersetRec(s, k + 1, m + 1, n); /* with m */
        powersetRec(s, k, m + 1, n); /*  without m */
    }
}
 
int main(){
 
    int s[6]; // stack
    powersetRec(s, 014);
    
    printPowerset(4);
 
    return 0;
}
 
cs


출력 결과물

1
1 2
1 2 3
1 2 3 4
1 2 4
1 3
1 3 4
1 4
2
2 3
2 3 4
2 4
3
3 4
4