HTML Preparation code:
AخA
 
1
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.min.js"></script>
Script Preparation code:
 
var exercise = {
    "data": {
        "name": "전설의 포켓몬을 찾아라!",
        "dataset_label": "포켓몬",
        "datasets": [
            {
                "type": "pokemon",
                "data": {
                    "name": "쥬벳",
                    "image": "pokemon/Zubat.png",
                    "stats": {
                        "hp": 40,
                        "attack": 45,
                        "defense": 35,
                        "sp_atk": 30,
                        "sp_def": 40,
                        "speed": 55
                    },
                    "type1": "poison"
                },
                "label": "일반"
            },
            {
                "type": "pokemon",
                "data": {
                    "name": "꼬부기",
                    "image": "pokemon/Squirtle.png",
                    "stats": {
                        "hp": 44,
                        "attack": 48,
                        "defense": 65,
                        "sp_atk": 50,
                        "sp_def": 64,
                        "speed": 43
                    },
                    "type1": "water"
                },
                "label": "일반"
            },
            {
                "type": "pokemon",
                "data": {
                    "name": "잠만보",
                    "image": "pokemon/Snorlax.png",
                    "stats": {
                        "hp": 160,
                        "attack": 110,
                        "defense": 65,
                        "sp_atk": 65,
                        "sp_def": 110,
                        "speed": 30
                    },
                    "type1": "normal"
                },
                "label": "일반"
            },
            {
                "type": "pokemon",
                "data": {
                    "name": "뮤츠",
                    "image": "pokemon/Mewtwo.png",
                    "stats": {
                        "hp": 106,
                        "attack": 110,
                        "defense": 90,
                        "sp_atk": 154,
                        "sp_def": 90,
                        "speed": 130
                    },
                    "type1": "psychic"
                },
                "label": "전설"
            },
            {
                "type": "pokemon",
                "data": {
                    "name": "피죤",
                    "image": "pokemon/Pidgey.png",
                    "stats": {
                        "hp": 40,
                        "attack": 45,
                        "defense": 40,
                        "sp_atk": 35,
                        "sp_def": 35,
                        "speed": 56
                    },
                    "type1": "flying"
                },
                "label": "일반"
            },
            {
                "type": "pokemon",
                "data": {
                    "name": "고라파덕",
                    "image": "pokemon/Psyduck.png",
                    "stats": {
                        "hp": 50,
                        "attack": 52,
                        "defense": 48,
                        "sp_atk": 65,
                        "sp_def": 50,
                        "speed": 55
                    },
                    "type1": "water"
                },
                "label": "일반"
            },
            {
                "type": "pokemon",
                "data": {
                    "name": "캐터피",
                    "image": "pokemon/Caterpie.png",
                    "stats": {
                        "hp": 45,
                        "attack": 30,
                        "defense": 35,
                        "sp_atk": 20,
                        "sp_def": 20,
                        "speed": 45
                    },
                    "type1": "bug"
                },
                "label": "일반"
            }
        ],
        "workspace_type": "pokemon_ex1",
        "threshold": 50,
        "dataset_name": "pokemon",
        "initial_instruction": {
            "1": {
                "Pg1": "포켓몬과 그 능력치를 모아 놓은 포켓몬도감 목록을 가져왔습니다. 여기에는 일반 포켓몬과 전설의 포켓몬, 두 종류의 데이터가 있습니다.  한 포켓몬의 능력치가 주어졌을 때, 전설의 포켓몬 여부를 구분하는 머신러닝 모델을 만들려고 합니다.",
                "img1": "http://localhost:1234/static/data/images/initial-instruction/courseC/exercise1.png",
                "Link": "https://www.icon54.com",
                "Tip1": "주어진 데이터 그대로 모델을 만들었을 때, 모델의 정확도를 확인해 봅시다."
            }
        },
        "instructions": [
            [
                "주어진 포켓몬의 능력으로 전설의 포켓몬을 찾는 모델을 만드는 실습입니다."
            ]
        ],
        "hint": "데이터의 가공없이 모델을 만들었을 때의 정확도를 알아봅시다.",
        "mission_complete_message": "미션을 완료했습니다! 다른 데이터를 눌러보면서 결과를 확인해보세요",
        "dataset_split": [
            [
                "training",
                "학습 데이터"
            ],
            [
                "test",
                "테스트 데이터"
            ]
        ],
        "block_library": {
            "dataset": [
                {
                    "type": "input.array.ability",
                    "set": "training",
                    "name": "학습 데이터"
                },
                {
                    "type": "input.array.ability",
                    "set": "test",
                    "name": "테스트 데이터"
                }
            ],
            "model": [
                {
                    "type": "layer.PokemonTiny",
                    "name": "model",
                    "text": "전설의 포켓몬을 구분하는 머신러닝 모델입니다."
                }
            ]
        },
        "workspace_type_id": 20,
        "accuracy_panel_required": true,
        "data_type": "array"
    },
    "course": {
        "id": "3",
        "course_name": "Course 3",
        "course_data": {
            "lectures": {},
            "quizzes": {
                "selection": {
                    "question": "거짓말 측정기의 정확성을 높이려면?",
                    "quiz_type": "equal",
                    "order_sensitive": "False",
                    "instruction": "거짓말 측정기를 학습시킬 거짓말 데이터가 준비되어 있습니다. 각각의 데이터는 데이터의 양이 서로 다릅니다. 세 가지의 데이터 중 어떤 데이터를 학습시켰을 때 거짓말 측정기의 정확성이 가장 높을까요?",
                    "text": "거짓말 측정기의 정확성",
                    "blocks": [
                        {
                            "accuracy": "50%",
                            "text": [
                                "사자는 파충류야"
                            ]
                        },
                        {
                            "accuracy": "77%",
                            "text": [
                                "사자는 파충류야",
                                "시드니는 호주의 수도야",
                                "스쿨버스는 파란색이야"
                            ]
                        },
                        {
                            "accuracy": "96%",
                            "text": [
                                "사자는 파충류야",
                                "시드니는 호주의 수도야",
                                "스쿨버스는 파란색이야",
                                "만원권에는 이순신 장군이 있지",
                                "초등학교는 5년제야",
                                "블루베리는 주황색이야"
                            ]
                        }
                    ],
                    "answer": "96%"
                },
                "outlier": {
                    "question": "필요없는 데이터 지워보세요.",
                    "quiz_type": "compare",
                    "order_sensitive": "False",
                    "instruction": "평균적인 범위에서 크게 벗어나는 아웃라이어(Outlier) 데이터를 클릭해서 지워보세요.",
                    "text": "오차의 합",
                    "data": [
                        {
                            "outlier": false,
                            "axis": [
                                4,
                                8
                            ]
                        },
                        {
                            "outlier": true,
                            "axis": [
                                2,
                                40
                            ]
                        },
                        {
                            "outlier": false,
                            "axis": [
                                5,
                                23
                            ]
                        },
                        {
                            "outlier": false,
                            "axis": [
                                6,
                                25
                            ]
                        },
                        {
                            "outlier": false,
                            "axis": [
                                8,
                                27
                            ]
                        },
                        {
                            "outlier": false,
                            "axis": [
                                10,
                                40
                            ]
                        },
                        {
                            "outlier": false,
                            "axis": [
                                14,
                                42
                            ]
                        },
                        {
                            "outlier": true,
                            "axis": [
                                12,
                                10
                            ]
                        },
                        {
                            "outlier": true,
                            "axis": [
                                15,
                                80
                            ]
                        },
                        {
                            "outlier": false,
                            "axis": [
                                17,
                                58
                            ]
                        },
                        {
                            "outlier": false,
                            "axis": [
                                18,
                                70
                            ]
                        }
                    ],
                    "threshold": 10
                },
                "confusion_matrix": {
                    "question": "데이터 불균형: 혼동행렬 표 채우기",
                    "quiz_type": "equal",
                    "instruction": "사과를 분류하기 위한 분류기를 개발하였습니다. 사과와 바나나를 분류한 결과를 보고 혼동행렬 표를 채워보세요.(소수점 둘째자리에서 반올림)",
                    "text": [
                        "정밀도",
                        "재현율",
                        "정확성"
                    ],
                    "order_sensitive": "True",
                    "data": {
                        "matrix": {
                            "data": [
                                [
                                    "1",
                                    "8"
                                ],
                                [
                                    "0",
                                    "1"
                                ]
                            ],
                            "key": [
                                "예측",
                                "실제",
                                [
                                    "사과",
                                    "바나나"
                                ]
                            ]
                        },
                        "input_text": [
                            "정밀도",
                            "재현율",
                            "정확성"
                        ]
                    },
                    "answer": [
                        "11.1",
                        "100",
                        "20"
                    ]
                }
            },
            "exercises": {
                "pokemon_ex1": {
                    "name": "전설의 포켓몬을 찾아라!",
                    "dataset_label": "포켓몬",
                    "datasets": [
                        {
                            "type": "pokemon",
                            "data": {
                                "name": "쥬벳",
                                "image": "pokemon/Zubat.png",
                                "stats": {
                                    "hp": 40,
                                    "attack": 45,
                                    "defense": 35,
                                    "sp_atk": 30,
                                    "sp_def": 40,
                                    "speed": 55
                                },
                                "type1": "poison"
                            },
                            "label": "일반"
                        },
                        {
                            "type": "pokemon",
                            "data": {
                                "name": "꼬부기",
                                "image": "pokemon/Squirtle.png",
                                "stats": {
                                    "hp": 44,
                                    "attack": 48,
                                    "defense": 65,
                                    "sp_atk": 50,
                                    "sp_def": 64,
                                    "speed": 43
                                },
                                "type1": "water"
                            },
                            "label": "일반"
                        },
                        {
                            "type": "pokemon",
                            "data": {
                                "name": "잠만보",
                                "image": "pokemon/Snorlax.png",
                                "stats": {
                                    "hp": 160,
                                    "attack": 110,
                                    "defense": 65,
                                    "sp_atk": 65,
                                    "sp_def": 110,
                                    "speed": 30
                                },
                                "type1": "normal"
                            },
                            "label": "일반"
                        },
                        {
                            "type": "pokemon",
                            "data": {
                                "name": "뮤츠",
                                "image": "pokemon/Mewtwo.png",
                                "stats": {
                                    "hp": 106,
                                    "attack": 110,
                                    "defense": 90,
                                    "sp_atk": 154,
                                    "sp_def": 90,
                                    "speed": 130
                                },
                                "type1": "psychic"
                            },
                            "label": "전설"
                        },
                        {
                            "type": "pokemon",
                            "data": {
                                "name": "피죤",
                                "image": "pokemon/Pidgey.png",
                                "stats": {
                                    "hp": 40,
                                    "attack": 45,
                                    "defense": 40,
                                    "sp_atk": 35,
                                    "sp_def": 35,
                                    "speed": 56
                                },
                                "type1": "flying"
                            },
                            "label": "일반"
                        },
                        {
                            "type": "pokemon",
                            "data": {
                                "name": "고라파덕",
                                "image": "pokemon/Psyduck.png",
                                "stats": {
                                    "hp": 50,
                                    "attack": 52,
                                    "defense": 48,
                                    "sp_atk": 65,
                                    "sp_def": 50,
                                    "speed": 55
                                },
                                "type1": "water"
                            },
                            "label": "일반"
                        },
                        {
                            "type": "pokemon",
                            "data": {
                                "name": "캐터피",
                                "image": "pokemon/Caterpie.png",
                                "stats": {
                                    "hp": 45,
                                    "attack": 30,
                                    "defense": 35,
                                    "sp_atk": 20,
                                    "sp_def": 20,
                                    "speed": 45
                                },
                                "type1": "bug"
                            },
                            "label": "일반"
                        }
                    ],
                    "workspace_type": "pokemon_ex1",
                    "threshold": 50,
                    "dataset_name": "pokemon",
                    "initial_instruction": {
                        "1": {
                            "Pg1": "포켓몬과 그 능력치를 모아 놓은 포켓몬도감 목록을 가져왔습니다. 여기에는 일반 포켓몬과 전설의 포켓몬, 두 종류의 데이터가 있습니다.  한 포켓몬의 능력치가 주어졌을 때, 전설의 포켓몬 여부를 구분하는 머신러닝 모델을 만들려고 합니다.",
                            "img1": "http://localhost:1234/static/data/images/initial-instruction/courseC/exercise1.png",
                            "Link": "https://www.icon54.com",
                            "Tip1": "주어진 데이터 그대로 모델을 만들었을 때, 모델의 정확도를 확인해 봅시다."
                        }
                    },
                    "instructions": [
                        [
                            "주어진 포켓몬의 능력으로 전설의 포켓몬을 찾는 모델을 만드는 실습입니다."
                        ]
                    ],
                    "hint": "데이터의 가공없이 모델을 만들었을 때의 정확도를 알아봅시다.",
                    "mission_complete_message": "미션을 완료했습니다! 다른 데이터를 눌러보면서 결과를 확인해보세요",
                    "dataset_split": [
                        [
                            "training",
                            "학습 데이터"
                        ],
                        [
                            "test",
                            "테스트 데이터"
                        ]
                    ],
                    "block_library": {
                        "dataset": [
                            {
                                "type": "input.array.ability",
                                "set": "training",
                                "name": "학습 데이터"
                            },
                            {
                                "type": "input.array.ability",
                                "set": "test",
                                "name": "테스트 데이터"
                            }
                        ],
                        "model": [
                            {
                                "type": "layer.PokemonTiny",
                                "name": "model",
                                "text": "전설의 포켓몬을 구분하는 머신러닝 모델입니다."
                            }
                        ]
                    },
                    "workspace_type_id": 20,
                    "accuracy_panel_required": true,
                    "data_type": "array"
                },
                "pokemon_ex2": {
                    "name": "데이터를 가공해서 전설의 포켓몬을 찾아라!",
                    "dataset_label": "포켓몬",
                    "datasets": [
                        {
                            "type": "pokemon",
                            "data": {
                                "name": "쥬벳",
                                "image": "pokemon/Zubat.png",
                                "stats": {
                                    "hp": 40,
                                    "attack": 45,
                                    "defense": 35,
                                    "sp_atk": 30,
                                    "sp_def": 40,
                                    "speed": 55
                                },
                                "type1": "poison"
                            },
                            "label": "일반"
                        },
                        {
                            "type": "pokemon",
                            "data": {
                                "name": "꼬부기",
                                "image": "pokemon/Squirtle.png",
                                "stats": {
                                    "hp": 44,
                                    "attack": 48,
                                    "defense": 65,
                                    "sp_atk": 50,
                                    "sp_def": 64,
                                    "speed": 43
                                },
                                "type1": "water"
                            },
                            "label": "일반"
                        },
                        {
                            "type": "pokemon",
                            "data": {
                                "name": "잠만보",
                                "image": "pokemon/Snorlax.png",
                                "stats": {
                                    "hp": 160,
                                    "attack": 110,
                                    "defense": 65,
                                    "sp_atk": 65,
                                    "sp_def": 110,
                                    "speed": 30
                                },
                                "type1": "normal"
                            },
                            "label": "일반"
                        },
                        {
                            "type": "pokemon",
                            "data": {
                                "name": "뮤츠",
                                "image": "pokemon/Mewtwo.png",
                                "stats": {
                                    "hp": 106,
                                    "attack": 110,
                                    "defense": 90,
                                    "sp_atk": 154,
                                    "sp_def": 90,
                                    "speed": 130
                                },
                                "type1": "psychic"
                            },
                            "label": "전설"
                        },
                        {
                            "type": "pokemon",
                            "data": {
                                "name": "피죤",
                                "image": "pokemon/Pidgey.png",
                                "stats": {
                                    "hp": 40,
                                    "attack": 45,
                                    "defense": 40,
                                    "sp_atk": 35,
                                    "sp_def": 35,
                                    "speed": 56
                                },
                                "type1": "flying"
                            },
                            "label": "일반"
                        },
                        {
                            "type": "pokemon",
                            "data": {
                                "name": "고라파덕",
                                "image": "pokemon/Psyduck.png",
                                "stats": {
                                    "hp": 50,
                                    "attack": 52,
                                    "defense": 48,
                                    "sp_atk": 65,
                                    "sp_def": 50,
                                    "speed": 55
                                },
                                "type1": "water"
                            },
                            "label": "일반"
                        },
                        {
                            "type": "pokemon",
                            "data": {
                                "name": "캐터피",
                                "image": "pokemon/Caterpie.png",
                                "stats": {
                                    "hp": 45,
                                    "attack": 30,
                                    "defense": 35,
                                    "sp_atk": 20,
                                    "sp_def": 20,
                                    "speed": 45
                                },
                                "type1": "bug"
                            },
                            "label": "일반"
                        }
                    ],
                    "workspace_type": "pokemon_ex2",
                    "threshold": 90,
                    "dataset_name": "pokemon",
                    "tutorial": [
                        {
                            "text": "아래 버튼을 클릭해서 데이터 가공하는 탭을 열어봐! 사용하지 않을 데이터는 선택 해제하면 돼."
                        }
                    ],
                    "initial_instruction": {
                        "1": {
                            "Pg1": "포켓몬과 그 능력치를 모아 놓은 포켓몬도감 목록을 가져왔습니다. 여기에는 일반 포켓몬과 전설의 포켓몬, 두 종류의 데이터가 있습니다.  한 포켓몬의 능력치가 주어졌을 때, 전설의 포켓몬 여부를 구분하는 머신러닝 모델을 만들려고 합니다.",
                            "img1": "http://localhost:1234/static/data/images/initial-instruction/courseC/exercise1.png",
                            "Link": "https://www.icon54.com"
                        },
                        "2": {
                            "Pg1": "이 때, 학습 데이터 셋에서 정상적인 포켓몬 능력치 범위(0~200)를 벗어나는 이상치(아웃라이어)를 발견했습니다.",
                            "img1": "http://localhost:1234/static/data/images/initial-instruction/courseC/exercise2-2.png",
                            "Tip1": "아웃라이어를 제거하여 모델의 정확도를 높여봅시다."
                        }
                    },
                    "instructions": [
                        [
                            "지우가 얻은 데이터 중 이상치를 제거하여 전설의 포켓몬 찾는 모델의 정확도를 높여봅시다. (능력치 범위는 0 ~ 200입니다.)"
                        ]
                    ],
                    "hint": "데이터의 가공없이 모델을 만들었을 때의 정확도를 알아봅시다.",
                    "mission_complete_message": "미션을 완료했습니다! 다른 데이터를 눌러보면서 결과를 확인해보세요",
                    "dataset_split": [
                        [
                            "training",
                            "학습 데이터"
                        ],
                        [
                            "test",
                            "테스트 데이터"
                        ]
                    ],
                    "block_library": {
                        "dataset": [
                            {
                                "type": "input.array.ability",
                                "set": "training",
                                "name": "학습 데이터"
                            },
                            {
                                "type": "input.array.ability",
                                "set": "test",
                                "name": "테스트 데이터"
                            }
                        ],
                        "model": [
                            {
                                "type": "layer.PokemonTiny",
                                "name": "model",
                                "text": "전설의 포켓몬을 구분하는 머신러닝 모델입니다."
                            }
                        ]
                    },
                    "workspace_type_id": 21,
                    "accuracy_panel_required": true,
                    "data_type": "array"
                }
            }
        }
    },
    "tutorialPageSwitches": null
}
Tests:
  • R.path

     
    R.path(['course', 'course_data', 'exercises'])(exercise)
  • native path

     
    exercise?.course?.course_data?.exercises
  • pure native path

     
    exercise.course.course_data.exercises
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    R.path
    native path
    pure native path

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 3 years ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36
Chrome 91 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
R.path 2898219.8 Ops/sec
native path 16498848.0 Ops/sec
pure native path 17026860.0 Ops/sec