13af6ab5fSopenharmony_ci/* 23af6ab5fSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 33af6ab5fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the 'License'); 43af6ab5fSopenharmony_ci * you may not use this file except in compliance with the License. 53af6ab5fSopenharmony_ci * You may obtain a copy of the License at 63af6ab5fSopenharmony_ci * 73af6ab5fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 83af6ab5fSopenharmony_ci * 93af6ab5fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 103af6ab5fSopenharmony_ci * distributed under the License is distributed on an 'AS IS' BASIS, 113af6ab5fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 123af6ab5fSopenharmony_ci * See the License for the specific language governing permissions and 133af6ab5fSopenharmony_ci * limitations under the License. 143af6ab5fSopenharmony_ci */ 153af6ab5fSopenharmony_ci 163af6ab5fSopenharmony_ciimport assert = require('assert'); 173af6ab5fSopenharmony_ci 183af6ab5fSopenharmony_cilet suits = ['hearts', 'spades', 'clubs', 'diamonds']; 193af6ab5fSopenharmony_ci 203af6ab5fSopenharmony_cifunction pickCard(x: { suit: string; card: number; }[]): number; 213af6ab5fSopenharmony_cifunction pickCard(x: number): { suit: string; card: number; }; 223af6ab5fSopenharmony_cifunction pickCard(x): any { 233af6ab5fSopenharmony_ci if (typeof x === 'object') { 243af6ab5fSopenharmony_ci return Math.floor(0.5 * x.length); 253af6ab5fSopenharmony_ci } 263af6ab5fSopenharmony_ci // Otherwise just let them pick the card 273af6ab5fSopenharmony_ci else if (typeof x === 'number') { 283af6ab5fSopenharmony_ci let pickedSuit = Math.floor(x / 13); 293af6ab5fSopenharmony_ci return {suit: suits[pickedSuit], card: x % 13}; 303af6ab5fSopenharmony_ci } 313af6ab5fSopenharmony_ci} 323af6ab5fSopenharmony_ci 333af6ab5fSopenharmony_cilet myDeck = [{suit: 'diamonds', card: 2}, {suit: 'spades', card: 10}, {suit: 'hearts', card: 4}]; 343af6ab5fSopenharmony_cilet pickedCard1 = myDeck[pickCard(myDeck)]; 353af6ab5fSopenharmony_ci 363af6ab5fSopenharmony_ciassert(pickedCard1.card === 10, 'success'); 373af6ab5fSopenharmony_ciassert(pickedCard1.suit === 'spades', 'success'); 383af6ab5fSopenharmony_ci 393af6ab5fSopenharmony_cilet pickedCard2 = pickCard(15); 403af6ab5fSopenharmony_ci 413af6ab5fSopenharmony_ci 423af6ab5fSopenharmony_ciassert(pickedCard2.card === 2, 'success'); 433af6ab5fSopenharmony_ciassert(pickedCard2.suit === 'spades', 'success');