## binomial coefficient

0 likes • Nov 19, 2022
JavaScript

## More JavaScript Posts

### Rings and Rods

CodeCatch
0 likes • Nov 19, 2022
JavaScript
```// There are n rings and each ring is either red, green, or blue. The rings are distributed across ten rods labeled from 0 to 9.
// You are given a string rings of length 2n that describes the n rings that are placed onto the rods. Every two characters in rings forms a color-position pair that is used to describe each ring where:
// The first character of the ith pair denotes the ith ring's color ('R', 'G', 'B').// The second character of the ith pair denotes the rod that the ith ring is placed on ('0' to '9').// For example, "R3G2B1" describes n == 3 rings: a red ring placed onto the rod labeled 3, a green ring placed onto the rod labeled 2, and a blue ring placed onto the rod labeled 1.
// Return the number of rods that have all three colors of rings on them.

let rings = "B0B6G0R6R0R6G9";var countPoints = function(rings) {        let sum = 0;    	// Always 10 Rods    for (let i = 0; i < 10; i++) {        if (rings.includes(`B\${i}`) && rings.includes(`G\${i}`) && rings.includes(`R\${i}`)) {            sum+=1;        }    }        return sum;    };
console.log(countPoints(rings));```
```const Discord = require('discord.js');const client = new Discord.Client();const token = 'YOUR_BOT_TOKEN';
// When the bot is ready, log a message to the consoleclient.on('ready', () => {  console.log(`Logged in as \${client.user.tag}!`);});
// When a user sends a message, check if they are authenticatedclient.on('message', async (msg) => {  if (!msg.author.bot && !msg.author.authenticated) {    const filter = (m) => m.author.id === msg.author.id;    const collector = msg.channel.createMessageCollector(filter, { time: 15000 });
// Send an authentication message to the user    msg.author.send('Please authenticate yourself by clicking this link: ' + generateAuthURL(msg.author.id));
collector.on('collect', async (m) => {      // Check if the message contains the authentication code      if (m.content.startsWith('!auth ')) {        const code = m.content.slice(6);        const { access_token } = await getAccessToken(code);
// Set the user's authenticated status and access token        msg.author.authenticated = true;        msg.author.access_token = access_token;        collector.stop();      }    });
collector.on('end', () => {      if (!msg.author.authenticated) {        msg.author.send('Authentication timed out.');      }    });  }});
// Generate an authentication URL for the userfunction generateAuthURL(userId) {  const redirectURI = encodeURIComponent('YOUR_REDIRECT_URL');  const scopes = 'identify';  const clientID = 'YOUR_CLIENT_ID';
return `https://discord.com/api/oauth2/authorize?client_id=\${clientID}&redirect_uri=\${redirectURI}&response_type=code&scope=\${scopes}&state=\${userId}`;}
// Exchange the authorization code for an access tokenasync function getAccessToken(code) {  const redirectURI = encodeURIComponent('YOUR_REDIRECT_URL');  const clientID = 'YOUR_CLIENT_ID';  const clientSecret = 'YOUR_CLIENT_SECRET';
const res = await fetch('https://discord.com/api/oauth2/token', {    method: 'POST',    headers: {      'Content-Type': 'application/x-www-form-urlencoded',    },    body: `grant_type=authorization_code&code=\${code}&redirect_uri=\${redirectURI}&client_id=\${clientID}&client_secret=\${clientSecret}`,  });
return await res.json();}

### format duration

CodeCatch
0 likes • Nov 19, 2022
JavaScript
```const formatDuration = ms => {  if (ms < 0) ms = -ms;  const time = {    day: Math.floor(ms / 86400000),    hour: Math.floor(ms / 3600000) % 24,    minute: Math.floor(ms / 60000) % 60,    second: Math.floor(ms / 1000) % 60,    millisecond: Math.floor(ms) % 1000  };  return Object.entries(time)    .filter(val => val[1] !== 0)    .map(([key, val]) => `\${val} \${key}\${val !== 1 ? 's' : ''}`)    .join(', ');};
formatDuration(1001); // '1 second, 1 millisecond'formatDuration(34325055574); // '397 days, 6 hours, 44 minutes, 15 seconds, 574 milliseconds'```
```"use strict";const nodemailer = require("nodemailer");
// async..await is not allowed in global scope, must use a wrapperasync function main() {  // Generate test SMTP service account from ethereal.email  // Only needed if you don't have a real mail account for testing  let testAccount = await nodemailer.createTestAccount();
// create reusable transporter object using the default SMTP transport  let transporter = nodemailer.createTransport({    host: "smtp.ethereal.email",    port: 587,    secure: false, // true for 465, false for other ports    auth: {      user: testAccount.user, // generated ethereal user      pass: testAccount.pass, // generated ethereal password    },  });
// send mail with defined transport object  let info = await transporter.sendMail({    from: '"Fred Foo 👻" <[email protected]>', // sender address    to: "[email protected], [email protected]", // list of receivers    subject: "Hello ✔", // Subject line    text: "Hello world?", // plain text body    html: "<b>Hello world?</b>", // html body  });
console.log("Message sent: %s", info.messageId);  // Message sent: <[email protected]>
// Preview only available when sending through an Ethereal account  console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));  // Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...}
main().catch(console.error);```

### Flatten an array

CodeCatch
0 likes • Nov 19, 2022
JavaScript
```const flat = arr => [].concat.apply([], arr.map(a => Array.isArray(a) ? flat(a) : a));// Orconst flat = arr => arr.reduce((a, b) => Array.isArray(b) ? [...a, ...flat(b)] : [...a, b], []);
// Or// See the browser compatibility at https://caniuse.com/#feat=array-flatconst flat = arr => arr.flat();
// Exampleflat(['cat', ['lion', 'tiger']]);   // ['cat', 'lion', 'tiger']```

### linear search

CodeCatch
0 likes • Nov 19, 2022
JavaScript
```const linearSearch = (arr, item) => {  for (const i in arr) {    if (arr[i] === item) return +i;  }  return -1;};
linearSearch([2, 9, 9], 9); // 1linearSearch([2, 9, 9], 7); // -1```